方法如何返回多个类型

since66 2008-04-24 01:47:03
public static string 返回一个string类型

public static DataSet返回一个DataSet类型

那我同时返回一个DataSet类型和一个string类型!请问怎么实现?
...全文
370 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jtg98g3 2008-04-26
  • 打赏
  • 举报
回复
public static Object SQLdt(int PageIndex,String sql)
{
.。。。。
DataSet ds1 = new DataSet();
ds0.Fill(ds1);
return ds1; //返回的是一个DataSet

string str="这是字符";
return str; //我还想返回一个string类型的字符!请问怎么实现?
}


你说的不是同时返回两种类型的参数。如果你想同时返回两中以上的类型的参数,那么你就用object 列表。
这样不是很好,因为每次引用的时候都要判断返回值是属于什么类型的。
你这样的需求有点怪怪的。
lovingprince 2008-04-25
  • 打赏
  • 举报
回复
设计有缺陷啊,呵呵,不过要实现也不难
返回一个Result类
public class Result{
Map values=new HashMap();
boolean success;

public Object getValue(String key){
return values.get(key);
}
public void setValue(String key,Object value){
values.put(key,value);
}

public void setSuccess(boolean success){
this.success=success;
}
public boolean isSuccess(){
return success;
}
}

呵呵。

这个样使用
public Result XXXX(){
......
result.setValue("key1",dataSet);

return result;
}
syeerzy 2008-04-24
  • 打赏
  • 举报
回复
5 对于具体的如DataSet这样的庞大的类,你甚至还有其他方式,比如可以把这个DataSet多Add一个只有一行一列的Table进去,然后对这个多添加一行,是你要的String.(如果你这个String也是个数据库里读的内容,到具体环境中,偶尔也有这样处理的情况)


以上5个是我临时想到了,只要发挥想象力,有很多方式,关键是要选最好最合适的(而不是最好的), 推荐前2种方式.
syeerzy 2008-04-24
  • 打赏
  • 举报
回复
4 如果有返回的多个类型中只有一个为值类型(或String---因为String的内存访问方式特殊)的时候,可以返回值为值类型(或String).然后所有要返回的引用类型以参数形式传入,比如你说一个DataSet一个String则可以
public string fun(int index,string sql, DataSet dataset)
{
dataset.Tables.Add(....);
.....
return "...";
}

然后调用的时候
DataSet dataset = new DataSet();
string name = fun(1,"SELECT * FROM T",dataset);
然后这里可以访问dataset的内容,因为已经被填充了...


syeerzy 2008-04-24
  • 打赏
  • 举报
回复
有好几种方案,根据具体情况不同考虑:

1 out 参数,楼上很多人说了,这是最方便的方式,也是适用范围最广的方式.
2 定义一个自己的类,这个类有2个实例字段,类型分别为DataSet和string ,比如:
public class DataSetWithName
{
private DataSet Values;
private string Name;
//访问器.........
}
然后返回一个这种对象就行了. 这应用在如果有很多方法都需要这样的返回,或者需要一次返回很多个参数的时候,还有如果需要不同.Net语言相互调用的时候(C#支持out参数,但是这不是CLR标准,所以不是所有语言都支持),还有这2个参数具有现实的意义时,等等.

3 用一个各个参数的公关父类数组(比如Object[])等,以弱类型方式返回. 这极不可取,除了多了开箱封箱的性能损失以外还造成调用方的麻烦和代码耦合度上升(因为调用方为了能进行类型转换需要了解方法实现细节). 仅仅合适使用在需要返回非常大量不同参数的时候,并且其之间无逻辑组合意义,且调用方与被调用方位于相同程序集时,谨慎使用..(不推荐)
书农 2008-04-24
  • 打赏
  • 举报
回复
返回一个Object[]什么都解决了
jackyzsy2008 2008-04-24
  • 打赏
  • 举报
回复
public static DataSet SQLdt(int PageIndex,String sql)
方法定义已经说了要返回DataSet类型,如果你return一个string类型肯定出错,楼上高手都说了,用out参数吧
cxunxun 2008-04-24
  • 打赏
  • 举报
回复
学习!!!!!!!!!!!!
vefo 2008-04-24
  • 打赏
  • 举报
回复
ref or out
sjt000 2008-04-24
  • 打赏
  • 举报
回复
out
地下室小红叔 2008-04-24
  • 打赏
  • 举报
回复
用返回值 并配合用out或/和ref声明参数就可以
二者区别是 传递out参数前可以只声明不实例化 ref参数必先实例化 具体例子看参考资料
ychangh 2008-04-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 LGame 的回复:]
public static DataSet SQLdt(int PageIndex,String sql,out string Result)

或者

public static DataSet SQLdt(int PageIndex,String sql,ref string Result)

[/Quote]
LGame 2008-04-24
  • 打赏
  • 举报
回复
public static DataSet SQLdt(int PageIndex,String sql,out string Result)

或者

public static DataSet SQLdt(int PageIndex,String sql,ref string Result)
快乐的毛毛虫 2008-04-24
  • 打赏
  • 举报
回复
关注
一品梅 2008-04-24
  • 打赏
  • 举报
回复
Declaring an out method is useful when you want a method to return multiple values. A method that uses an out parameter can still a variables as a return type (see return) but it can also return one or more objects to a calling method as out parameters. This example uses out to return three variables with a single method call. Note that the third argument is assigned to null. This allows methods to return values optionally.

Copy Code
class OutReturnExample
{
static void Method(out int i, out string s1, out string s2)
{
i = 44;
s1 = "I've been returned";
s2 = null;
}
static void Main()
{
int value;
string str1, str2;
Method(out value, out str1, out str2);
// value is now 44
// str1 is now "I've been returned"
// str2 is (still) null;
}
}
since66 2008-04-24
  • 打赏
  • 举报
回复
分数有限!各位兄弟不好意思!
vrhero 2008-04-24
  • 打赏
  • 举报
回复
out 参数...看MSDN...

public static DataSet SQLdt(int PageIndex,string sql,out string result)
since66 2008-04-24
  • 打赏
  • 举报
回复
像这样子

public static DataSet SQLdt(int PageIndex,String sql)
{
......
DataSet ds1 = new DataSet();
ds0.Fill(ds1);
return ds1; //返回的是一个DataSet

string str="这是字符";
return str; //我还想返回一个string类型的字符!请问怎么实现?
}
凋零的老树 2008-04-24
  • 打赏
  • 举报
回复
不可能的,我想你们给的答案都不是楼主所要的

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧