泛型方法的问题??

likingbq 2010-09-11 02:59:23
如果一个方法返回值不确定的时候怎么解决
是否有泛型的方法 举个例子说明下 谢谢
...全文
176 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
种草德鲁伊 2010-09-11
  • 打赏
  • 举报
回复
不确定类型可以返回 default(T)
莫聆 2010-09-11
  • 打赏
  • 举报
回复
泛型是在编译时就确定具体的类型,你的情况不适合用泛型,建议用返回值object,在调用方转换。
wanghui0380 2010-09-11
  • 打赏
  • 举报
回复
因为不确定返回值,所以应该使用委托来延迟确定,委托给调用方让他自己决定他需要返回啥类型的值
wanghui0380 2010-09-11
  • 打赏
  • 举报
回复
这种要求我通常采用func<T,U>延迟确定

比如

    private U myconvert<T,U>(T obj,Func<T,U> func)
{
return func(obj);

}


那么调用方式可以是
 string str=myconvert(1, c => c.ToString());//int2string

int rint = myconvert("1", c => Convert.ToInt32(c));//string2int
兔子-顾问 2010-09-11
  • 打赏
  • 举报
回复
单个方法的返回值不确定,你可以考虑返回object,如果调用时能确定类型,可以用泛型,例如
public T GetCopyData<T>(T t1) where T : ICloneable
{
return (T)t1.Clone();
}
wanghui0380 2010-09-11
  • 打赏
  • 举报
回复
看看net框架内部一个委托定义方式:func<>

 // 摘要:
// 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。
//
// 参数:
// arg:
// 此委托封装的方法的参数。
//
// 类型参数:
// T:
// 此委托封装的方法的参数类型。
//
// TResult:
// 此委托封装的方法的返回值类型。
//
// 返回结果:
// 此委托封装的方法的返回值。
[TypeForwardedFrom("System.Core, Version=3.5.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089")]
public delegate TResult Func<in T, out TResult>(T arg);
relup 2010-09-11
  • 打赏
  • 举报
回复
你最好把例子列出来,你这样提问,不知道你在问什么
likingbq 2010-09-11
  • 打赏
  • 举报
回复
问题补充下 可以在定义委托时定义一个泛型返回值的类型吗

因为我委托的方法 返回值不确定 除了object以外 有方法解答吗
likingbq 2010-09-11
  • 打赏
  • 举报
回复
谢谢楼上的 我想做个数据库访问的dll 把一些重复的代码打包成方法 供别人去用
因为每个人用的返回类型都不一样 所有要做个泛型泛型的方法
  • 打赏
  • 举报
回复
C#中函数返回值为泛型,可以像如下代码:
public T raise<T, T1, T2>(T1 t1, T2 t2)
{
string x = "";
return (T)(Object)x;
}
调用方如:
String s1 = null;
String s2 = null;
string re = c.raise<string, string, string>(s1, s2);
Nick黄 2010-09-11
  • 打赏
  • 举报
回复
返回Object绝对不会错,哈哈

要不就弄上个弱类型 PS:int? index;

110,525

社区成员

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

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

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