Константы и поля для чтения

Последнее обновление: 27.07.2018
Вопрос 1

В чем различие между константами и полями для чтения (readonly)?

Значения констант должны быть установлены к моменту компиляции. Значения полей для чтения можно устанавливать при выполнении программы в конструкторе.

Вопрос 2

Почему не компилируется следующая программа?

class Example
{
	public static const double KOEF = 4.5;
    public readonly double field = 7.8;

	public Example(int f)
	{
		this.field = KOEF * f;
	}
}
class Program
{
	static void Main(string[] args)
	{
		Example example = new Example(10);
		Console.WriteLine(example.field);

		Console.ReadKey();
	}
}

Варианты ответов:

  • При определении константы нельзя использовать модиифкаторы доступа, например, модификатор public

  • Константы с модификатором public могут располагаться только в классе, который тоже определен с модификатором public

  • Константа не может быть статической (то есть не может быть определена с модиифкатором static)

  • Значение поля для чтения может быть установлено только один раз, здесь же оно устанавливается два раза

Программа не скомпилируется, потому что константы не могут быть статическими.

Вопрос 3

Какие числа выведет на консоль следующая программа?

class Example
{
	public const double KOEF = 4.5;
	public readonly double field;

	public Example(int f)
	{
		this.field = KOEF * f;
	}
}
class Program
{
	static void Main(string[] args)
	{
		Example example = new Example(10);
		Console.WriteLine(example.field);
		Console.WriteLine(example.KOEF);

		Console.ReadKey();
	}
}

Программа не выведет никакие значения, так как она не будет скомпилирована. Поскольку мы не можем обращаться к константе через имя экземпляра класса (Console.WriteLine(example.KOEF);), к константе необходимо обращаться по имени класса: Example.KOEF.

Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850