在C#里使用泛型,调用一个函数时,怎么转化泛型数组?
比如我有一个函数fun1:voidfun1<T>(T[]a,intb){fun2(a);}调用了另一个函数fun2,其中,fun2有几个重载,如下:voidfun2(by...
比如我有一个函数fun1:
void fun1<T> (T[]a, int b)
{
fun2(a);
}
调用了另一个函数fun2,
其中,fun2有几个重载,如下:
void fun2(byte[] x);
void fun2(int[] x);
void fun2(double[] x);
在实际的代码中,这样做会出现泛型T[]无法转化为相应类型数组的问题.这要怎么处理?
那个fun2具体的是指系统类库里面的一个函数,已经没办法改的.因为不同的类型有不同的处理,主要是类型的长度问题.
回1楼.fun1里只是调用到了这个方法,我可不想只是因为一行代码的不同调用而写三个版本的fun1
回baitaotaobee:如果是那样子的话,我就得重载3个fun1了。fun1里的代码比较多,这样分开了不方便维护。。如果是用两个泛型的话,重载就太多了。。。
我是想,在调用Fun2时,有必要的话,进行一下转换,然后再调用相应的fun2,但主要的问题是我不知道在这里要怎么转换,直接强制转换编译过不了.
如果是使用Object类型,是否可行?我在这个函数里主要是涉及到数组的长度和其所占用的空间,然后调用不同类型的fun2 展开
void fun1<T> (T[]a, int b)
{
fun2(a);
}
调用了另一个函数fun2,
其中,fun2有几个重载,如下:
void fun2(byte[] x);
void fun2(int[] x);
void fun2(double[] x);
在实际的代码中,这样做会出现泛型T[]无法转化为相应类型数组的问题.这要怎么处理?
那个fun2具体的是指系统类库里面的一个函数,已经没办法改的.因为不同的类型有不同的处理,主要是类型的长度问题.
回1楼.fun1里只是调用到了这个方法,我可不想只是因为一行代码的不同调用而写三个版本的fun1
回baitaotaobee:如果是那样子的话,我就得重载3个fun1了。fun1里的代码比较多,这样分开了不方便维护。。如果是用两个泛型的话,重载就太多了。。。
我是想,在调用Fun2时,有必要的话,进行一下转换,然后再调用相应的fun2,但主要的问题是我不知道在这里要怎么转换,直接强制转换编译过不了.
如果是使用Object类型,是否可行?我在这个函数里主要是涉及到数组的长度和其所占用的空间,然后调用不同类型的fun2 展开
展开全部
你的fun2也要是泛型方法啊
fun2<T>(T[] x)
还有指定类型的fun2<double>(double[] x)
fun2<T>(T[] x)
还有指定类型的fun2<double>(double[] x)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fun2也是泛型方法就好了,返回一个泛型就OK了啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
无法转化 应为T是一个泛型有可能是任意类型的 可能是无法转化成int的类型 这样写就无法通过编译 不知道你是什么意思 如果要想通过不同参数来实现fun2的重载的话 完全可以直接调用 fun2(int[] intArray) 或者 fun2(byte[] byteArray)
为何要通过一个泛型 和fun1函数和泛型T呢
为何要通过一个泛型 和fun1函数和泛型T呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void fun2(Array a)
{
}
{
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询