Вот основные Two
методы:
1) Использование 'out
' в качестве параметра
Вы можете использовать 'out' как для 4.0, так и для минорных версий.
Пример 'out':
using System;
namespace out_parameter
{
class Program
{
//Accept two input parameter and returns two out value
public static void rect(int len, int width, out int area, out int perimeter)
{
area = len * width;
perimeter = 2 * (len + width);
}
static void Main(string[] args)
{
int area, perimeter;
// passing two parameter and getting two returning value
Program.rect(5, 4, out area, out perimeter);
Console.WriteLine("Area of Rectangle is {0}\t",area);
Console.WriteLine("Perimeter of Rectangle is {0}\t", perimeter);
Console.ReadLine();
}
}
}
Выход:
Площадь прямоугольника составляет 20
Периметр прямоугольника составляет 18
* Примечание: * Ключевое слово out
описывает параметры, чьи фактические местоположения переменных копируются в стек вызываемого метода, где эти же местоположения могут быть переписаны. Это означает, что вызывающий метод получит доступ к измененному параметру.
2) Tuple<T>
Пример кортежа:
Возврат нескольких значений DataType с использованием Tuple<T>
using System;
class Program
{
static void Main()
{
// Create four-item tuple; use var implicit type.
var tuple = new Tuple<string, string[], int, int[]>("perl",
new string[] { "java", "c#" },
1,
new int[] { 2, 3 });
// Pass tuple as argument.
M(tuple);
}
static void M(Tuple<string, string[], int, int[]> tuple)
{
// Evaluate the tuple's items.
Console.WriteLine(tuple.Item1);
foreach (string value in tuple.Item2)
{
Console.WriteLine(value);
}
Console.WriteLine(tuple.Item3);
foreach (int value in tuple.Item4)
{
Console.WriteLine(value);
}
}
}
выход
perl
java
c#
1
2
3
ПРИМЕЧАНИЕ: Использование Tuple действует в Framework 4.0 и более поздних версиях . Tuple
- это тип class
. Он будет размещен в отдельном месте в управляемой куче в памяти. После создания Tuple
вы не сможете изменить значения fields
. Это делает Tuple
больше похожим на struct
.