Использование неназначенной локальной переменной в моем классе (c#, silverlight)
Я знаю, что есть много тем с этой проблемой, но я не нашел свой случай.
У меня есть ошибка "использование неназначенной локальной переменной 'flags' "
public class Flag : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _Tag;
public string Tag
{
get { return _Tag; }
set
{
_Tag = value;
NotifyPropertyChanged("Tag");
}
}
private string _Name;
public string Name
{
get { return _Name; }
set
{
_Name = value;
NotifyPropertyChanged("Name");
}
}
private void NotifyPropertyChanged(string propertyName)
{
if (null != PropertyChanged)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
const string filename = "Flags.xml";
public void Save()
{
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream stream = storage.CreateFile(filename);
XmlSerializer xml = new XmlSerializer(GetType());
xml.Serialize(stream, this);
stream.Close();
stream.Dispose();
}
}
Проблема в основной части кода, когда я пытаюсь присвоить флаги
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
Flag flags;
flags.Name = "1111"; //I here error
flags.Tag = "1"; //I
//I
flags.Save(); //I
}
}
5 ответов:
Вам нужно инициализировать
flags
:public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent(); Flag flags = new Flag(); flags.Name = "1111"; flags.Tag = "1"; flags.Save(); } }
Вам нужно создать экземпляр этой переменной класса.
Когда вы создадите его экземпляр при объявлении объекта класса
Flag flags=new Flag()
, Эта ошибка исчезнет.Вся ваша функция будет выглядеть так:
public MainPage() { InitializeComponent(); Flag flags = new Flag(); flags.Name = "1111"; flags.Tag = "1"; flags.Save(); }
Согласно вашему коду флаг является классом, и вы не можете инициализировать значения переменных-членов класса до тех пор, пока не выделите некоторое пространство для объекта класса в куче памяти. Вы можете построить объект класса, используя ключевое слово new, как показано ниже.
Flag flags = new Flag();
Здесь flags-это переменная типа Flag, которая снова содержит ссылку на объект типа Flag.
Теперь, поскольку вы назначили некоторую область памяти переменной flags, которая будет снова инициализируйте пространство для своей переменной-члена, значение которой вы можете присвоить этим переменным momber, используя приведенный ниже код -
flags.Name = "1234"; flags.Tag = "12";
Отметьте это как ответ, если это помогло вам понять проблему.