Пропуск полей в модельных классах

Недавно, прочитав множество учебных пособий по Интернету, я заметил, что некоторые разработчики пропускают запись полей в своих классах моделей и просто переходят к свойствам, например так:

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

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

Заранее спасибо,

филиал

2 ответа

Решение

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

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

См . Документацию Microsoft для получения дополнительной информации.

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

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

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

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

Лучше всего просто написать это, как у вас есть в вопросе.

Другие вопросы по тегам