【发布时间】:2011-05-19 12:49:53
【问题描述】:
如何在 c# 函数中返回多个类型,就像我想返回字符串和数据表一样?
【问题讨论】:
如何在 c# 函数中返回多个类型,就像我想返回字符串和数据表一样?
【问题讨论】:
最简单的答案是使用 DataTable 的 TableName 属性。
更一般的答案是使用Tuple<DataTable, string> 或编写类或结构。
【讨论】:
Tuple 类是 .Net 4.0 的新内容。 TableName 属性不是。
使用 ref 或 out 参数
ref参数:需要调用者方法初始化。
public string ReturnName(ref int position)
{
position = 1;
return "Temp"
}
public string GetName()
{
int i =0;
string name = ReturnName(ref i);
// you will get name as Temp and i =1
}
// best use out parameter is the TryGetXXX patternn in various places like (int.TryParse,DateTime.TryParse)
int i ;
bool isValid = int.TryParse("123s",out i);
【讨论】:
您可以定义自己的类作为返回类型:
class MyReturnType
{
public string String { get; set; }
public DataTable Table { get; set; }
}
并返回一个实例。您可以使用元组,但通常最好使用有意义的类型和属性名称,尤其是当其他人要在软件上工作时。
或者您可以在函数上使用out 参数。
你走的路取决于适合你的情况。如果字符串和 DataTable 是同一事物的两个部分,那么类就有意义了。如果该字符串用于创建 DataTable 失败时的错误消息,则 out 参数可能更合适。
【讨论】:
使用输出参数:
public string Function(out DataTable result)
这样称呼它:
DataTable table;
string result = Function(out table);
【讨论】:
使用元组作为返回值。
【讨论】: