2009-11-06 4 views
0

В последнее время, после того, как много читал учебники по всему Интернету, я заметил, что некоторые разработчики скачет пишущие поля в своих классах модели и просто пойти со свойствами, например:Пропуск полей на модели классов

public class MyClass 
{ 
    public string MyProperty { get; private set; } 
} 

В чем же преимущество этого, помимо написания кода меньше? Хотя я понимаю, что сеттер является конфиденциальным, нет ли каких-то проблем с безопасностью, когда вы не указываете свои личные поля? Другими словами: какая здесь практика? Написание классов моделей без полей и связанных свойств или просто с этими открытыми свойствами без полей?

Спасибо заранее,

Бо

ответ

5

В C# 3.0 и выше, компилятор поместит локальные переменные в MSIL для вас. Это делает код более удобным для чтения и более удобным (меньше переменных отслеживать и т. Д.).

Не должно быть проблем с безопасностью, поскольку внутри него является, создавая локальные переменные-члены.

См. Microsoft's documentation для получения дополнительной информации.

+0

Отлично, спасибо большое Боб. Эта ссылка MS Doc была именно тем, что я искал :) в настоящее время пишет отчет/обзор, где мне нужен источник для документирования этого. – bomortensen

1

Если вы не выполняете какие-либо операции над переменными, просто установите их и прочитайте их, как они есть, то зачем добавлять дополнительный код для создания частной переменной и выполнять полный набор параметров и getter?

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

Каждый раз, когда вы можете сделать код более удобным для чтения, даже если в компиляторе есть синтаксический сахар, это победа.

Но если вам нужно выполнить какую-либо операцию, например, проверить, что свойство находится в определенном диапазоне, то на C# 3 вам все равно нужно написать все остальное.

Лучшая практика заключается в том, чтобы просто написать его, как есть в вопросе.