Шаг 64 - Перечисления, ref, out

В прошлом шаге я говорил о том, что разницу ref и out легко почувствовать на перечислениях. Смотрим код:

using System;

class MainClass
{
	
	public enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

	public static void Functs(ref Days day)
	{
		day=Days.Sat;
	}
	
	public static void Main(string[] args)
	{
		Days day;	
		Functs(ref day);
		Console.WriteLine(day);
	}
}

При компиляции получим ошибку так как Days day; объявляет переменную но ее не инициализирует.

gif/64_1.gif (3082 b)

А вот использование out позволяет это сделать.

using System;

class MainClass
{
	
	public enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

	public static void Functs(out Days day)
	{
		day=Days.Sat;
	}
	
	public static void Main(string[] args)
	{
		Days day;	
		Functs(out day);
		Console.WriteLine(day);
	}
}

Все нормально, out допускает использование неинициализированный параметров.

gif/64_2.gif (2574 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 6.10.2001