原文链接:http://www.easck.com/ylvict/p/5573094.html
回顾
首先,提出一个问题,C#中,如何使一个方法可返回"多个"返回值?
我们先来回顾一下C#6.0 及更早版本的做法。
在C#中,通常我们有以下4种方式使一个方法返回多条数据。
•使用 KeyValue 组合
•
static void Main(string[] args)
{
int int1 = 15;
int int2 = 25;
var result = Add_Multiply(int1, int2);
Console.WriteLine(result.Key);
Console.WriteLine(result.Value);
}
private static KeyValuePair<int, int> Add_Multiply(int int1, int int2)
{
var KeyValuePair = new KeyValuePair<int, int>(int1 + int2, int1 * int2);
return KeyValuePair;
}
•使用 ref/out 参数
•Ref
•
static void Main(string[] args)
{
int int1 = 15;
int int2 = 25;
int add = 0;
int multiply = 0;
Add_Multiply(int1, int2, ref add, ref multiply);
Console.WriteLine(add);
Console.WriteLine(multiply);
}
private static void Add_Multiply(int int1, int int2, ref int add, ref int multiply)
{
add = int1 + int2;
multiply = int1 * int2;
}
•Out
•
static void Main(string[] args)
{
int int1 = 15;
int int2 = 25;
int add = 0;
int multiply = 0;
Add_Multiply(int1, int2, out add, out multiply);
Console.WriteLine(add);
Console.WriteLine(multiply);
}
private static void Add_Multiply(int int1, int int2, out int add, out int multiply)
{
add = int1 + int2;
multiply = int1 * int2;
}
•使用 struct 或者 class •struct
•
struct Result
{
public int add;
public int multiply;
}
static void Main(string[] args)
{
int int1 = 53;
int int2 = 17;
var result = Add_Multiply(int1, int2);
Console.WriteLine(result.add);
Console.WriteLine(result.multiply);
}
private static Result Add_Multiply(int int1, int int2)
{
var result = new Result
{
add = int1 + int2,
multiply = int1 * int2
};
return result;
}
•class
•
class Result
{
public int add;
public int multiply;
}
static void Main(string[] args)
{
int int1 = 13;
int int2 = 27;
var result = Add_Multiply(int1, int2);
Console.WriteLine(result.add);
Console.WriteLine(result.multiply);
}
private static Result Add_Multiply(int int1, int int2)
{
var result = new Result
{
add = int1 + int2,
multiply = int1 * int2
};
return result;
}
•dynamic
•
static void Main(string[] args)
{
int int1 = 13;
int int2 = 27;
var result = Add_Multiply(int1, int2);
Console.WriteLine(result.add);
Console.WriteLine(result.multiply);
}
private static dynamic Add_Multiply(int int1, int int2)
{
var result = new
{
add = int1 + int2,
multiply = int1 * int2
};
return result;
}










