3

我知道这个问题有很多主题,但我没有找到我的案例。

我有一个错误“使用未分配的局部变量'标志'”

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
        }
    }
4

5 回答 5

3

您需要初始化flags

public partial class MainPage : PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
        Flag flags = new Flag();          
        flags.Name = "1111"; 
        flags.Tag = "1";     
        flags.Save();        
    }
}
于 2013-08-05T11:32:03.953 回答
3

您需要实例化此类变量。

当您在声明类 object 时实例化它时Flag flags=new Flag(),此错误将会消失。

您的整个功能将如下所示:

 public MainPage()
    {
        InitializeComponent();
        Flag flags = new Flag();          
        flags.Name = "1111"; 
        flags.Tag = "1";     
        flags.Save();        
    }
于 2013-08-05T11:33:06.213 回答
2

尝试这个

Flag flags = new Flag();
于 2013-08-05T11:33:49.987 回答
2

根据您的代码标志是一个类,除非并且直到您在内存堆上为类的对象分配了一些空间,否则您无法初始化该类的成员变量的值。您可以使用 new 关键字构造类的对象,如下所示。

Flag flags = new Flag();   

这里的 flags 是一个 Flag 类型的变量,它再次包含对一个 Flag 类型的对象的引用。

现在,由于您已经为 flags 变量分配了一些内存空间,这将再次为其成员变量初始化空间,因此您可以使用以下代码分配这些 momber 变量的值-

flags.Name = "1234"; 
flags.Tag = "12"; 

如果帮助您理解问题,请将其标记为答案。

于 2013-08-05T11:54:00.057 回答
2

创建一个标志标志的对象。然后尝试分配它。

Flag flags = new Flag();
于 2013-08-05T11:33:26.180 回答