看到这个题目,我们可能会有点迟疑,理论上讲一个函数只有一个返回值,是的,确实是这样,但我们同样也有方法可以实现这个效果:
使用ref关键字:
//Example1
using System;
namespace Program
{
class Test
{
static void Main()
{
Test ts = new Test();
int i=0;//必须有初始化
int sum = ts.Fun(ref i, 10);
Console.WriteLine(i);//输出10
Console.WriteLine(sum);//输出20
Console.ReadKey();
}
public int Fun(ref int i, int j)
{
i = j;
return i + j;
}
}
}
using System;
namespace Program
{
class Test
{
static void Main()
{
Test ts = new Test();
int i=0;//必须有初始化
int sum = ts.Fun(ref i, 10);
Console.WriteLine(i);//输出10
Console.WriteLine(sum);//输出20
Console.ReadKey();
}
public int Fun(ref int i, int j)
{
i = j;
return i + j;
}
}
}
使用out关键字同样也可以打到这种效果,示例代码如下:
//Example2
using System;
namespace Program
{
class Test
{
static void Main()
{
Test ts = new Test();
int i=0;//必须有初始化
object obj;//可以不用初始化
ts.Fun(ref i, out obj);
Console.WriteLine(i);//输出5
Console.WriteLine(obj);//输出5
Console.ReadKey();
}
public void Fun(ref int i, out object obj)
{
i += 5;
obj = i.ToString();
Console.WriteLine(i);//输出5
Console.WriteLine(obj);//输出5
}
}
}
using System;
namespace Program
{
class Test
{
static void Main()
{
Test ts = new Test();
int i=0;//必须有初始化
object obj;//可以不用初始化
ts.Fun(ref i, out obj);
Console.WriteLine(i);//输出5
Console.WriteLine(obj);//输出5
Console.ReadKey();
}
public void Fun(ref int i, out object obj)
{
i += 5;
obj = i.ToString();
Console.WriteLine(i);//输出5
Console.WriteLine(obj);//输出5
}
}
}