В настоящее время я реализую версию алгоритма RSA для малоимущего человека, и я хотел, чтобы простые числа d, e, m и n были доступны только для чтения, так как они будут автоматически сгенерированы внутри тела конструктора. Тем не менее, я получаю два различных результата, когда я типа:Функция Get-Set Accessor отличается наличием ключевого слова get-set
class RSA
{
public RSA()
{
n = 4;
}
private long n { get; private set; }
}
или
class RSA
{
public RSA()
{
n = 4;
}
private long n { get; }
}
Чтение книги Accelarated C#, у меня сложилось впечатление, что частный набор функция может быть реализована с автоматическим Реализуемый свойствами. Оказывается, я могу сделать это и в самом конструкторе, но только для первой версии.
Чтение C# 3.0 стандарт он говорит:
A property that has both a get accessor and a set accessor is a read-write property, a property that has only a get accessor is a read-only property, and a property that has only a set accessor is a write-only property.
Но они не ведут себя одинаково.
Простой вопрос: Почему я могу инициализировать значение в моем конструкторе, когда я явно объявляю private set
, но не если я делаю это неявно? В чем отличия здесь?