Использование неназначенной локальной переменной в моем классе (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 3

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();        
    }

Создайте объект Flag flags. тогда попробуйте назначить его.

Flag flags = new Flag();

Попробуйте это

Flag flags = new Flag();

Согласно вашему коду флаг является классом, и вы не можете инициализировать значения переменных-членов класса до тех пор, пока не выделите некоторое пространство для объекта класса в куче памяти. Вы можете построить объект класса, используя ключевое слово new, как показано ниже.

Flag flags = new Flag();   

Здесь flags-это переменная типа Flag, которая снова содержит ссылку на объект типа Flag.

Теперь, поскольку вы назначили некоторую область памяти переменной flags, которая будет снова инициализируйте пространство для своей переменной-члена, значение которой вы можете присвоить этим переменным momber, используя приведенный ниже код -

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

Отметьте это как ответ, если это помогло вам понять проблему.