1. Во-первых, в .NET не все параметры передаются по ссылке. Типы, наследующие ValueType (или, другими словами, структуры) передаются-таки по значению. Модификатор ref позволяет передавать структуры по ссылке.
2. Даже если вы имеете дело не со структурой, а с классом, модификатор ref всё равно может вам пригодиться. В этом случае он позволяет передавать ссылку не на объект (как обычно), а ссылку на переменную, содержащую ссылку на объект.
Пример:
public class Program
{
public static void Main()
{
string s = "old string";
Console.WriteLine( s );
ByValue( s );
Console.WriteLine( s );
ByRef( ref s );
Console.WriteLine( s );
}
static void ByValue( string s )
{
s = "new string - from ByValue";
}
static void ByRef( ref string s )
{
s = "new string - from ByRef";
}
}
Этот код выведет три строки:
old string
old string
new string - from ByRef
Видите разницу? Вызов метода ByRef изменил не какие-то поля объекта, на который ссылается переменная s, а само значение переменной s, так что она стала содержать ссылку на другой объект.
Если у вас остались вопросы, постараюсь на них ответить.
Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы п
Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 25 May 2005 06:57
|