方法应该返回多个值

Jib*_*oor 6 c#

HII

我在C#中有方法,我必须从该方法返回多个值而不使用像数组这样的集合.有可靠的方法吗?

Joe*_*oel 15

是的,out关键字:

public void ReturnManyInts(out int int1, out int int2, out int int3)
{
    int1 = 10;
    int2 = 20;
    int3 = 30;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样称呼它:

int i1, i2, i3;
ReturnManyInts(out i1, out i2, out i3);

Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(i3);
Run Code Online (Sandbox Code Playgroud)

哪个输出:

10
20
30
Run Code Online (Sandbox Code Playgroud)

编辑:

我看到很多帖子都建议为此创建自己的课程.这不是必需的,因为.net为你提供了一个他们已经说过的课程.该Tuple班.

public Tuple<int, string, char> ReturnMany()
{
    return new Tuple<int, string, char>(1, "some string", 'B');
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样检索它:

var myTuple = ReturnMany();
myTuple.Item1 ...
myTuple.Item2 ...
Run Code Online (Sandbox Code Playgroud)

存在泛型重载,因此您的元组中最多可以包含8种唯一类型.

  • 此外,`Tuple.Create`方法可以推断出类型:`return Tuple.Create(1,"some string",'B');` (3认同)
  • 请注意,Tuple是.NET 4.0的一个新功能,Jibu可能还没有. (3认同)

Kyl*_*ndo 10

好吧,你可以使用:

  • 自定义类/结构/类型,包含所有值
  • out 参数

即:

class MyValues
{
    public string Val1 { get; set; }
    public int Val2 {get; set; }
}

public MyValues ReturnMyValues();
Run Code Online (Sandbox Code Playgroud)

要么

public void ReturnMyValues(out string Val1, out int Val2);
Run Code Online (Sandbox Code Playgroud)


Jeh*_*hof 5

如果您使用的是.NET 4.0,则可以使用其中一个通用Tuple类从方法调用中返回多个值.静态Tuple类提供了创建Tuple对象的方法.因此,您不必为方法定义自己的返回类型.

public Tuple<string,int> Execute()
{
  return new Tuple<string,int>("Hello World", 2);
}
Run Code Online (Sandbox Code Playgroud)