2013-08-05 21 views
3

我知道这个问题有很多主题,但我没有找到我的案例。在我的课堂上使用未分配的本地变量(c#,silverlight)

我有在代码的主要部分

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 
     } 
    } 
+1

问题解决后,请始终标记正确的答案。 –

+0

这是真的,你的问题都没有标记答案 –

回答

3

您需要初始化flags

public partial class MainPage : PhoneApplicationPage 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
     Flag flags = new Flag();   
     flags.Name = "1111"; 
     flags.Tag = "1";  
     flags.Save();   
    } 
} 
+0

谢谢你的回应 –

3

您需要实例化此类变量。

当您在声明类对象Flag flags=new Flag()时将它实例化时,会发生此错误。

你的整体功能将类似于:

public MainPage() 
    { 
     InitializeComponent(); 
     Flag flags = new Flag();   
     flags.Name = "1111"; 
     flags.Tag = "1";  
     flags.Save();   
    } 
2

创建国旗标志的对象。然后尝试分配它。

Flag flags = new Flag(); 
2

试试这个

Flag flags = new Flag(); 
2

根据你的代码标志是一类,除非和直到您已经分配了一些空间的对象不能初始化类的成员变量的值在内存堆上的类。您可以使用new关键字构造一个类的对象,如下所示。

Flag flags = new Flag(); 

这里的标志是一个类型为Flag的变量,它又包含对Flag类型的对象的引用。

现在既然您已经分配一些内存空间来标志变量,它会重新初始化的空间为它的成员变量,你可以使用下面代码 -

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

将此标记为赋值给这些变量momber回答如果帮助你理解问题。