none
Для чего set? RRS feed

  • Вопрос

  •     class Class1
        {
            static public int a = 2;
            static public int Weak
            {
                get { return a; }
                set { a = 10; }
            }
        }

    В этом коде я так понял, что значение Weak приравнивается a, тоесть 2. Но когда срабатывает строка set? При первом вызове не сработало так как при втором вызове значение Class1.Weak было равно 2.

    Если что я учил по следующей ссылке:

    http://msdn.microsoft.com/ru-ru/library/w86s7x04.aspx

    • Изменено Ziya Ceferov 24 августа 2012 г. 11:51
    24 августа 2012 г. 11:51

Ответы

  • Давайте вот такой пример:

    class Class1
    {
        static public int a = 2;
        static public int Weak
        {
            get { return a; } // это геттер (тот кто возвращает)
            set { a = 10; } // это сеттер (тот кто назначает)
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Class1.Weak); // увидим 2
            Class1.Weak = 20;
            Console.WriteLine(Class1.Weak); // увидим 10
            Console.ReadLine();
        }
    }

    Все понятно? Ну и логичнее писать все таки сеттеры вот так:

    class Class1
    {
        static public int a = 2;
        static public int Weak
        {
            get { return a; } // это геттер (тот кто возвращает)
            set { a = value; } // это сеттер (тот кто назначает)
        }
    }

    В этом случае увидим при втором вызове 20.
    • Помечено в качестве ответа Ziya Ceferov 25 августа 2012 г. 9:54
    • Снята пометка об ответе Ziya Ceferov 25 августа 2012 г. 10:13
    • Помечено в качестве ответа Ziya Ceferov 25 августа 2012 г. 10:19
    24 августа 2012 г. 12:00
    Отвечающий

Все ответы

  • Давайте вот такой пример:

    class Class1
    {
        static public int a = 2;
        static public int Weak
        {
            get { return a; } // это геттер (тот кто возвращает)
            set { a = 10; } // это сеттер (тот кто назначает)
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Class1.Weak); // увидим 2
            Class1.Weak = 20;
            Console.WriteLine(Class1.Weak); // увидим 10
            Console.ReadLine();
        }
    }

    Все понятно? Ну и логичнее писать все таки сеттеры вот так:

    class Class1
    {
        static public int a = 2;
        static public int Weak
        {
            get { return a; } // это геттер (тот кто возвращает)
            set { a = value; } // это сеттер (тот кто назначает)
        }
    }

    В этом случае увидим при втором вызове 20.
    • Помечено в качестве ответа Ziya Ceferov 25 августа 2012 г. 9:54
    • Снята пометка об ответе Ziya Ceferov 25 августа 2012 г. 10:13
    • Помечено в качестве ответа Ziya Ceferov 25 августа 2012 г. 10:19
    24 августа 2012 г. 12:00
    Отвечающий
  • Привет.

    Как видно из ваших вопросов, вы только начинаете изучать .net и c#, как вы его изучаете? Может быть нам стоит посоветовать вам книгу, тогда у вас большинство базовых вопросов отпадет само-собой. А то что будет непонятно - вы всегда сможете спросить на форуме, также как и сейчас.


    Для связи [mail]

    24 августа 2012 г. 12:33