C# 泛型函数参数 传递给重载函数的问题
答案:3 悬赏:70 手机版
解决时间 2021-11-15 23:53
- 提问者网友:骑士
- 2021-11-15 11:35
C# 泛型函数参数 传递给重载函数的问题
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-11-15 12:28
对于dll里重载的fun来说每一个都是指定了明确的参数类型的,例如:
bool fun(int param);
bool fun(string param); 这时回到你写的泛型可以看到T是一个未知的类型,可想而知fun(t)这样的调用,对于fun来说并不能有明确的参数类型,所以fun不知道调用哪个重载方法。
因此如果你非要这么做,只能在Fun方法里写转换
比如:
public bool Fun(T t)
{
Type type = typeof(T);
switch (type.ToString())
{
case "System.Int32":
return fun((int)t);
case "System.String":
return fun(t.ToString());
default:
return false;
}
}追问谢谢你的回答,这的确是一种方法。因为fun函数的参数只是内置类型,所以我本来希望避免使用object类型作为参数,从而带来不必要的装箱和拆箱开销,现在看开即使使用泛型,在遇到这种情况仍然需要在函数内部进行类型判断,仍然会有拆箱的开销,不知道我说的对不对。如果是这样,我只好多谢几个Fun函数的重载了。
bool fun(int param);
bool fun(string param); 这时回到你写的泛型可以看到T是一个未知的类型,可想而知fun(t)这样的调用,对于fun来说并不能有明确的参数类型,所以fun不知道调用哪个重载方法。
因此如果你非要这么做,只能在Fun
比如:
public bool Fun
{
Type type = typeof(T);
switch (type.ToString())
{
case "System.Int32":
return fun((int)t);
case "System.String":
return fun(t.ToString());
default:
return false;
}
}追问谢谢你的回答,这的确是一种方法。因为fun函数的参数只是内置类型,所以我本来希望避免使用object类型作为参数,从而带来不必要的装箱和拆箱开销,现在看开即使使用泛型,在遇到这种情况仍然需要在函数内部进行类型判断,仍然会有拆箱的开销,不知道我说的对不对。如果是这样,我只好多谢几个Fun函数的重载了。
全部回答
- 1楼网友:零点过十分
- 2021-11-15 14:09
把dll的fun的所有重载的函数声明都贴出来看。
- 2楼网友:拜訪者
- 2021-11-15 13:49
我暂时保留意见!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯