#c# #reference #static #public
#c# #ссылка #статический #общедоступный
Вопрос:
Итак, я создаю своего рода музыкальный проигрыватель, в котором на данный момент есть 8 различных музыкальных жанров на выбор, и у меня возникают проблемы с использованием функций .play() и .stop() в этой системе.Медиафайлы.SoundPlayer предоставляет внешний метод, в котором создаются переменные SoundPlayer.
Я пытался сделать переменные общедоступными, но это, похоже, невозможно. У меня есть переменные SoundPlayer, объявленные следующим образом:
Stream rockmusic = Properties.Resources.rock1;
SoundPlayer playrock = new SoundPlayer(rockmusic);
Я хотел сделать так, чтобы я мог использовать playrock.Play(); и playrock.Stop(); внутри другого метода, например
private void ButtonWTVClick(object sender, EventArgs e){
playrock.Play();
}
Но public static не работает ни для System.IO.Stream, ни для System.Медиафайлы.SoundPlayer итак, я немного зациклился на том, как реализовать эти функции в разных методах, поскольку я довольно новичок в программировании и не знаю всех возможностей.
Комментарии:
1. Чтобы сделать член общедоступным, вам нужно объявить его общедоступным, например, в
public SoundPlayer playrock ...
, если это то, что вы хотите знать.2. я не могу использовать public в SoundPlayer, иначе он скажет, что потоки, которые я объявил ранее, не существуют в текущем контексте, например:
cs public Stream rockmusic = Properties.Resources.rock1; SoundPlayer playrock = new SoundPlayer(rockmusic); //"the name 'rockmusic' doesn't exist in the current context"
3. Вы можете инициализировать
playrock
непосредственно сnew SoundPlayer(Properties.Resources.rock1)
помощью и предоставлятьplayrock.Stream
через свойствоrockmusic
(если вам это действительно нужно как члену). Или переместите инициализацию в конструктор. Может быть, поделитесь с нами большим контекстом, чтобы было понятнее, что вам здесь нужно.4. Спасибо, что сработало, и это было довольно просто реализовать, большое спасибо.
Ответ №1:
Используйте последнее предложение sticky bit и объявите его на уровне класса / формы, например:
public partial class Form1 : Form
{
private SoundPlayer playrock = new SoundPlayer(Properties.Resources.rock1);
public Form1()
{
InitializeComponent();
}
private void ButtonWTVClick(object sender, EventArgs e)
{
playrock.Play();
}
}