泛型方法的问题?? 如果一个方法返回值不确定的时候怎么解决 是否有泛型的方法 举个例子说明下 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看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); 单个方法的返回值不确定,你可以考虑返回object,如果调用时能确定类型,可以用泛型,例如public T GetCopyData<T>(T t1) where T : ICloneable{ return (T)t1.Clone();} 这种要求我通常采用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 泛型是在编译时就确定具体的类型,你的情况不适合用泛型,建议用返回值object,在调用方转换。 不确定类型可以返回 default(T) 返回Object绝对不会错,哈哈要不就弄上个弱类型 PS:int? index; 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); 谢谢楼上的 我想做个数据库访问的dll 把一些重复的代码打包成方法 供别人去用 因为每个人用的返回类型都不一样 所有要做个泛型泛型的方法 问题补充下 可以在定义委托时定义一个泛型返回值的类型吗 因为我委托的方法 返回值不确定 除了object以外 有方法解答吗 一段16进制 如何转换成 字符串 C# 类被编译时都有哪些东西会被分配内存? 请问点击事件如何循环 请教一个关于C#调用非托管函数后返回值的读取问题 关于ComboBox的 安装问题 Winform 中的listBox控件,数据源是数组,怎样在移除被选中的项,请大家赐教!! DataSet 拆分问题 修改不了CustomerID吗? 为啥程序卡死呢? C# 二维数组里的数据怎么转换成可播放的帧图片 关于bitmap类与image类的用法与区别?
// 封装一个具有一个参数并返回 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);
public T GetCopyData<T>(T t1) where T : ICloneable
{
return (T)t1.Clone();
}
{
return func(obj);
}那么调用方式可以是
string str=myconvert(1, c => c.ToString());//int2string int rint = myconvert("1", c => Convert.ToInt32(c));//string2int
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);
因为每个人用的返回类型都不一样 所有要做个泛型泛型的方法