一.返回两个参数的常用方法
private void button1_Click(object sender, EventArgs e)
{string validateresult = string.Empty;
var person = new Person { Name="张三",Age=200};
bool isvalidate = Validate(person, out validateresult);
if (!isvalidate)
{
MessageBox.Show(validateresult);
}
}
private static bool Validate(Person person, out string validateresult)
{
validateresult = string.Empty;
if (person.Age > 150 || person.Age < 0)
{
validateresult = "年龄超出范围!";
return false;
}
return true;
}
二.用Tuple代替上边的方法
private void button2_Click(object sender, EventArgs e)
{
var person = new Person { Name = "张三", Age = 200 };
var result = Validate2(person);
if (!result.Item1)
{
MessageBox.Show(result.Item2);
}
}
private static Tuple<bool, string> Validate2 (Person person)
{
if (person.Age > 150 || person.Age < 0)
{
return Tuple.Create(false,"年龄超出范围!");
}
return Tuple.Create(true,string.Empty);
}
三.Tuple返回多参的扩展
private void button3_Click(object sender, EventArgs e)
{
int num = 5;
var result = caculte(num);
MessageBox.Show(string.Format("{0} * 1 = {1}\n{0} * 2 = {2}\n{0} * 3 = {3}\n{0} * 4 = {4}\n{0} * 5 = {5}\n{0} * 6 = {6}\n{0} * 7 = {7}\n{0} * 8 = {8}\n{0} * 9 = {9}\n{0} * 10 = {10}", num, result.Item1, result.Item2, result.Item3, result.Item4, result.Item5, result.Item6, result.Item7, result.Rest.Item1, result.Rest.Item2, result.Rest.Item3));
}
private static Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>> caculte(int num)
{
Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>> multicaculte = new Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>>
(
num * 1
,num * 2
,num * 3
,num * 4
,num * 5
,num * 6
,num * 7
,new Tuple<int,int,int>
(
num * 8
,num * 9
,num * 10
)
);
return multicaculte;
}