如何从 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<bool,int>
甚至 Nullable<int>
更有意义。
@George - 我不能代表迈克尔发言,但***.com/questions/281036/… 这个问题和第一个回复总结了我对输出参数的看法。以上是关于如何从 1 个 c# 方法返回 2 个值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
c# winform里一个函数返回几个值,我把这几个值返回到一个数据集里