如何从 1 个 c# 方法返回 2 个值? [复制]

Posted

技术标签:

【中文标题】如何从 1 个 c# 方法返回 2 个值? [复制]【英文标题】:how to return 2 values from 1 c# methods? [duplicate] 【发布时间】:2012-01-04 20:46:06 【问题描述】:

可能重复:How can I return multiple values from a function in C#?

C# 方法总是这样:

public <return type> funName()

//do sth
return someValueformatedasReturnType;

如何从 1 个 c# 方法返回 2 个值? 这是一个面试问题,你知道的很多。谢谢!

【问题讨论】:

那么你的答案是什么? 我回答了/引用类/结构,我只是觉得它可能有更多方法可以达到它(我在这里得到了“元组”)。所以我在这里问问题,我不知道为什么这么多投反对票,,,,,,,,,,,diu 【参考方案1】:

您可以为函数参数使用 ref 或 out 关键字。

int i;
int j;

dosomething(out i, out j);    

public void dosomething(out int a, out int b)

   a = 1;
   b = 2;

调用函数后,i = 1, j = 2。ref关键字相同,msdn告诉区别:)

或者返回一个元组。

@tudor

看看你的名字,用out作为对象名:S,out是用来传值的!

【讨论】:

【参考方案2】:

用两个输出定义一个新的数据类型(类):

public class Output

    public object Val1  get; set; 
    public object Val2  get; set; 

并返回一个输出类型的新对象:

public Output FunName()

     Output out = new Output;
     out.Val1 = val1;
     out.Val2 = val2;
     return out;

【讨论】:

【参考方案3】:

你有几个选择:

    输出参数 元组 具有 2 个属性的类

【讨论】:

【参考方案4】:

从最好到最差(恕我直言):

为返回类型创建一个新类 使用Tuple 使用out parameters

【讨论】:

为什么Tuple 比输出参数更好? @GeorgeDuckett 这是主观的,但输出参数总是向调用者添加大量样板文件(需要事先声明变量)并使方法签名复杂化(一些返回类型在左侧,一些其他人在签名中)。当然,这取决于,例如int.TryParse 作为输出参数比 Tuple&lt;bool,int&gt; 甚至 Nullable&lt;int&gt; 更有意义。 @George - 我不能代表迈克尔发言,但***.com/questions/281036/… 这个问题和第一个回复总结了我对输出参数的看法。

以上是关于如何从 1 个 c# 方法返回 2 个值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

c# winform里一个函数返回几个值,我把这几个值返回到一个数据集里

c#调用oracle存储过程,返回2个值

如何从 C# 中的同一方法返回字符串以及 IEnumerable<T>? [复制]

如何从方法中返回多个值? [复制]

LUA怎么获取指定的函数返回值

C# 异步方法:如何返回 HttpStatusCode? [复制]