Или же возвратить несколько значений

Нередко требуется, чтобы метод оперировал теми аргументами, которые ему передаются. Характерным тому примером служит метод Swap(), осуществляющий перестановку значений своих аргументов. Но поскольку аргументы простых типов передаются по значению, то, используя выбираемый в C# по умолчанию механизм вызова по значению для передачи аргумента параметру, невозможно написать метод, меняющий местами значения двух его аргументов, например типа int. Это затруднение разрешает модификатор ref.

Если из метода требуется возвратить два или более фрагментов информации, например, целую и дробную части числового значения с плавающей точкой? Такой метод можно написать, используя модификатор out.

Использование модификатора параметра ref

Модификатор параметра ref принудительно организует вызов по ссылке, а не по значению.

//использовать модификатор ref для передачи значения обычного типа по ссылке.

using System;

class RefTest

{

//этот метод изменяет свой аргумент.

public void Sqr(ref int i)

{

i = i * i;

}

}

class RefDemo

{

static void Main()

{

RefTest ob = new RefTest();

int a = 10;

Console.WriteLine("a до вызова: " + a);

ob.Sqr(ref a);

Console.WriteLine("a после вызова: " + a);

}

}

//поменять местами два значения.

using System;

class ValueSwap

{

//этот метод меняет местами свои аргументы.

public void Swap(ref int a, ref int b)

{

int t;

t = a;

a = b;

b = t;

}

}

class ValueSwapDemo

{

static void Main()

{

ValueSwap ob = new ValueSwap();

int x = 10, y = 20;

Console.WriteLine("x и y до вызова: " + x + " " + y);

ob.Swap(ref x, ref y);

Console.WriteLine("x и y после вызова: " + x + " " + y);

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: