我知道这个问题有很多主题,但我找不到我的情况。
我收到错误“使用未分配的本地变量'标记'”
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
}
}
答案 0 :(得分:3)
您需要初始化flags
:
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
Flag flags = new Flag();
flags.Name = "1111";
flags.Tag = "1";
flags.Save();
}
}
答案 1 :(得分:3)
您需要实例化此类变量。
当你在声明类对象Flag flags=new Flag()
的同时实例化它时,这个错误就会消失。
您的整个功能将如下所示:
public MainPage()
{
InitializeComponent();
Flag flags = new Flag();
flags.Name = "1111";
flags.Tag = "1";
flags.Save();
}
答案 2 :(得分:2)
创建Flag标志的对象。然后尝试分配它。
Flag flags = new Flag();
答案 3 :(得分:2)
试试这个
Flag flags = new Flag();
答案 4 :(得分:2)
根据你的代码标志是一个类,你不能初始化类的成员变量的值,除非你为内存堆上的类的对象分配了一些空间。您可以使用new关键字构造类的对象,如下所示。
Flag flags = new Flag();
这里的flags是Flag类型的变量,它再次包含对Flag类型对象的引用。
既然你已经为flags变量分配了一些内存空间,这会再次初始化其成员变量的空间,你可以使用下面的代码分配这些momber变量的值 -
flags.Name = "1234";
flags.Tag = "12";
如果帮助您理解问题,请将此标记为答案。