看到这个题目,我们可能会有点迟疑,理论上讲一个函数只有一个返回值,是的,确实是这样,但我们同样也有方法可以实现这个效果:
使用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
}
}
}