Есть ли разница между следующими декларациями (кроме разницы между const
и static readonly
)?Устанавливать и получать различия свойств и констант
public static int foo1 { get; } = 8;
private static readonly int foo2 = 4;
public static int Foo2
{
get { return foo2; }
}
private const int foo3 = 9;
public static int Foo3
{
get { return foo3;}
}
Что происходит за кулисами с foo1
? это то же самое, что и foo2
или foo3
?
Я спрашиваю про foo1
, потому что я не могу сделать это const
или readonly
с этим синтаксисом, поэтому я также спрашиваю, действительно ли это константа?
OMG это Джон тарелочкам! – shinzou
Теперь, когда я успокоился, я вижу, что 'const' в C# подобен метке сборки, поэтому его нельзя использовать, если вы хотите присвоить ему значение при создании объекта. Немного странно, что с 'foo1' синтаксис не WYSIWYG (какой C# действительно нравится по сравнению с другими языками). – shinzou
@kuhaku: Я боюсь, что я действительно не выполнил ваш комментарий вообще ... но 'foo1' - это просто автоматически реализованное свойство только для чтения с начальным значением 9. Значение может быть изменено в конструкторе, хотя , –