В настоящее время я реализую версию алгоритма RSA для бедного человека, и я хотел, чтобы простые числа d, e, m и n были доступны только для чтения, поскольку они будут автоматически генерироваться в теле конструктора. Однако при вводе я получаю два разных результата:
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
, но не если я делаю это неявно? Какие здесь различия?