在我的班级中使用未分配的局部变量(c#,silverlight)

时间:2013-08-05 11:29:53

标签: c# windows-phone-7 silverlight-4.0

我知道这个问题有很多主题,但我找不到我的情况。

我收到错误“使用未分配的本地变量'标记'”

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 个答案:

答案 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"; 

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