Что лучше, свойства с приватной переменной или автоматические свойства? - C#

Узнай цену своей работы

Формулировка задачи:

Известно, что в классах свойства можно определить так:
    class MyClass
    {
        private int[] val;
 
        public int[] Val
        {
            set
            {
                val = value;
            }
            get
            {
                return val;
            }
        }
 
        public MyClass()
        {
            val = new int[100000000];
        }
 
        public int SomeMethod()
        {
            int sum = 0;
            foreach (int v in val)
            {
                sum += v;
            }
            return sum;
        }
    }
А можно вообще вот так без использования переменной

val

:
    class MyClass2
    {
        public int Val { get; set; }
    }
Я до этого в своих программах, которые писал сам, всегда использовал первый тип, потому что размышлял вот так: внутри класса я смогу по прежнему иметь прямой доступ к переменной val(как в методе

SomeMethod()

), а не обращаться через свойство

Val { get; set; }

(как во втором примере). И это по скорости лучше, так как свойство - это тот же метод. А вызов метода, который в свою очередь вызывает уже переменную - лишние процессорные инструкции, соответственно ниже производительность(хоть и выиграш в производительности в данном случае незначительный, но все же, если учесть, что внутри класса получение переменной через свойство может вызываться огромное количество раз...) А вот с недавнего времени хожу на одни курсы по C#, и у меня с тренером возникли немного споры по этому поводу... Многие меня упрекают, что я в классах понасоздавал лишние переменные вместо того, чтобы просто использовать автоматические свойства. Пожалуйста, помогите мне разобраться в чем я не прав...

Решение задачи: «Что лучше, свойства с приватной переменной или автоматические свойства?»

textual
Листинг программы
+--------------------+-------+-------+-------+-------+-------+-------+
|                    |  4.0  | 4.0CP |  3.5  | 3.5CP |  3.0  |  2.0  |
+--------------------+-------+-------+-------+-------+-------+-------+
| Поле структуры     | 0.335 | 0.335 | 0.502 | 0.503 | 0.511 | 0.514 |
| Свойство структуры | 0.335 | 0.335 | 1.176 | 1.172 | 1.171 | 1.172 |
| Поле класса        | 4.510 | 4.523 | 4.567 | 5.377 | 5.173 | 4.795 |
| Свойство класса    | 5.070 | 5.126 | 5.548 | 5.817 | 5.590 | 5.484 |
+--------------------+-------+-------+-------+-------+-------+-------+

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы