如何让一个方法返回值为5种类型

petroe 2010-03-09 05:51:35
pulick 返回类型 functionTest(参数类型)
{
return 返回类型;
}
参数类型A -返回类型A
参数类型B -返回类型B

解决方案一:
pulick object method(object)
{
case (typeof(object))
...
}

缺点:返回后还要转下类型

解决方案二:
pulibc list<T> method<T>()
{

}
缺点:只能返回list<T>对象,想返回单个对象不行

求最佳解决方案,有其他思路欢迎列出
...全文
909 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
xray2005 2010-03-10
  • 打赏
  • 举报
回复
T method<T>(T value)
{
return value;
}
phoeni_xin 2010-03-10
  • 打赏
  • 举报
回复
蹭分。。。。。。。。。。。。。。。。。。
petroe 2010-03-10
  • 打赏
  • 举报
回复
感谢各位的提醒,让我看到了自己的问题。

我绕了一圈才发现,到最后还是要转类型。所以是个失败的设计。

用接口和重载都比这个方法都要好很多。


结贴
raycdut 2010-03-10
  • 打赏
  • 举报
回复
重载也可以呀。。。。。。。。。。。。。。。。。。。

flyerwing 2010-03-10
  • 打赏
  • 举报
回复
public <t> dosomething(int a)
{
}
public mystuct dosomething(int b)
{
}
结构里也整五个类型
mbh0210 2010-03-10
  • 打赏
  • 举报
回复
使用泛型。。。。。。。。。。。。。。。。。
  • 打赏
  • 举报
回复
我给你个建议,回归简单朴素的设计吧,不要给自己和别人空耗精力。你应该注重你所谓的方法内部“干什么”这种实质性的说明,并且用直截了当的接口来一一提供给别人使用,而把万能接口的把戏稍微滞后一些再搞。

你的方法内部的 switch 支它们之间的关系多么地无厘头,没有必要凑在一起。
HatoLee 2010-03-10
  • 打赏
  • 举报
回复
VS2005新功能,泛型
  • 打赏
  • 举报
回复
这不会怀才,只会怀上怪胎的。
  • 打赏
  • 举报
回复
你干脆把天下的程序都写但一个函数里算了 --> 你干脆把天下的程序都写到一个函数里算了。

这是多么“万能”的函数啊,不用事先知道要返回什么,反正什么都能返回。
cjnkd 2010-03-10
  • 打赏
  • 举报
回复
重载,回复内容太短了!
  • 打赏
  • 举报
回复
你干脆把天下的程序都写但一个函数里算了。

世界上最响亮的“空洞”设计。
abaochan 2010-03-10
  • 打赏
  • 举报
回复
把几个类型都包在一个类里做为属性,直接返回这个类不是就好了。
liushengmz 2010-03-10
  • 打赏
  • 举报
回复
泛型。。。。或者是封装为object。。。如果不介意装拆箱的话。。。。
jawettren 2010-03-10
  • 打赏
  • 举报
回复
把几个类型都包在一个类里做为属性,直接返回这个类不是就好了。

lovelan1748 2010-03-10
  • 打赏
  • 举报
回复
返回T就行了,但是我这两天有个问题没想通
T method<T>(T value)
{
//如何对T处理
return value;
}
l171147904 2010-03-10
  • 打赏
  • 举报
回复
引用 7 楼 vrhero 的回复:
C# codeT method<T>(object value)
{return (T)value;//注意这里必须能够转换}
泛型方法,50种类型也行...

问题是...你这么做的目的是什么?除非用泛型可以解决,否则这里用接口更合理...



UP....

泛类型 或接口咯。。。
r_swordsman 2010-03-10
  • 打赏
  • 举报
回复
返回一个包含5种类型的结构
兔子-顾问 2010-03-10
  • 打赏
  • 举报
回复
虽然你的问题有答案,有实现方法,但是,我想这不是最好的设计,不是大家方法不好,是你这样设计就不好,这样的设计,维护的人会很痛苦的。尽量在写的时候减少歧义,不写这种代码,一个方法,如果不用泛型进行编译时确定,要运行时确认类型的话,后期维护的人会发现这个方法返回的类型很难理解什么时候是什么类型,增加麻烦。增加可读性最重要,方法有2:
1.用泛型,这样编译时候就确定了调用处的返回值类型
2.展开写成多个方法Method_Integer,Method_String,Method_double虽然这样也有点啰嗦,但总归增加了可读性。
最差的就是
object Method(...)
然后扔给外面你自己判断,因为这个object在用的时候还要重新判断类型,动态的做很多事情。

拙见
wuyi8808 2010-03-10
  • 打赏
  • 举报
回复
引用楼主 petroe 的回复:
解决方案二:
pulibc list <T> method <T>()
{

}
缺点:只能返回list <T>对象,想返回单个对象不行


可以返回单个对象的,见26楼。
加载更多回复(26)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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