C#:值类型可以转泛型吗

C#问题:函数是这样定义的:publicboolread(stringname,outT[]data),其中T是泛型,我想将整型或浮点型数据给泛型T的数组,请问可以吗?如... C#问题:函数是这样定义的:public bool read(string name,out T[] data),其中T是泛型,我想将整型或浮点型数据给泛型T的数组,请问可以吗?如果可以程序应该怎么写? 展开
 我来答
百度网友d9d888a
2011-10-31 · TA获得超过341个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:75万
展开全部
可以把int, float这样的基本数据类型传给泛型数组,因为值类型也继承于Object类。上面的函数可以这样调用:
int[] arr=new int[]{1,2,3};
string name=null;
read(name, out arr);
更多追问追答
追问
嗯……我觉得我好像没说清楚。
public bool read(string name,out T[] data)
{在其中,我想将一个整形或者其他类型的数组附给这个泛型数组
类似于data=new T[i];
int []a=.........;
for(...........)
data[i]=a[i];
}
调用时是data.read("名字.txt",out a);
但是在将整形数组附给泛型数组时,总会报错“无法将类型int转换为T“,我想请问这样有什么解决办法吗?
追答
因为T是一个未知的类型,执行data[i]=a[i]这里肯定会出错,如果你在read方法中确定要让data数组保存int类型,就不应该把data定义成泛型类型。按照你上面的代码,read方法返回的data数组只能是int数组,所以把data定义成泛型已经没有意义了。如果你的函数的目的是想返回一个类型不确定的数组,例如你的代码可能是这样:
data=new T[i];
if(需要int数组){
int []a=new int[3];
for(............)
data[i]=a[i];
}
if(需要string数组){
string []a=new string[3];
for(............)
data[i]=a[i];
}
if(....)
........

那你可以把函数定义成 public bool read(string name, out object[] data)。
总之,泛型是在类型不确定的情况下用的,并且具有泛型类型参数的方法体内只应该使用泛型参数的类型,不应该随便把一个确定的类型给泛型类型赋值,除非你指定了某种泛型类型的约束,使得赋值操作可以借助类型转换得以完成。
冰麟轻武
2011-11-01 · TA获得超过603个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:287万
展开全部
只要自己写转型方法都是可以的转的
问题是如果是一个整数值 int i = 1;
你要把1转成什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戴修德E
2011-11-01 · 超过10用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:27.9万
展开全部
学习
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
402654282
2011-10-31 · TA获得超过341个赞
知道答主
回答量:108
采纳率:0%
帮助的人:83.4万
展开全部
围观
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式