泛型变量怎么传递?

jshzp 2012-06-06 06:22:09
src是类Player中的泛型属性,定义如下:

class Player<TSRC>
where TSRC : int, float
{
public static TSRC src
{ get; set; }
}

在类myC中,我需要使用src的值,所以在构造时传递进去,代码如下:

class myC
{
public myC(TSRC _src)//编译错误
{
}
}

出现编译错误:错误 未能找到类型或命名空间名称“TSRC”(是否缺少 using 指令或程序集引用?)
对泛型的用法不太熟悉,这里应该怎么写呢?还有别的更简洁的办法吗?谢谢指教!
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ParanoidKing 2012-06-06
  • 打赏
  • 举报
回复
T和TSRC是一样的,都只是一个泛型的标识符而已。关键在于声明实例的时候就要指定类型
myC<int> myc;
myc = new myC<int>(src);
jshzp 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:
class myC<T>
{
public myC(T _src)//编译错误
{
}
}

这样写,实例化时还是有问题:

C# code

myC<T> myc where T:int,float;
myc = new myC<int>( src);//编译错误


我理解,这里的T与TSRC不是同一个类型,所以导致“最匹配的方法具有一些……
[/Quote]
上面笔误:是
class myC<T> where T:int,float
{}
烈火蜓蜻 2012-06-06
  • 打赏
  • 举报
回复
或者也可以这样

class myC
{
public myC<T>(T _src) where T : class
{
}
}

可以在方法上定义泛型,where 后面约束该类型必须是一个引用类。
jshzp 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
class myC<T>
{
public myC(T _src)//编译错误
{
}
}
[/Quote]
这样写,实例化时还是有问题:

myC<T> myc where T:int,float;
myc = new myC<int>( src);//编译错误

我理解,这里的T与TSRC不是同一个类型,所以导致“最匹配的方法具有一些无效参数”的错误,对吗?怎么解决?谢谢!
jshzp 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
class myC<T>
{
public myC(T _src)//编译错误
{
}
}
[/Quote]
谢谢,看懂了
threenewbee 2012-06-06
  • 打赏
  • 举报
回复
class myC<T>
{
public myC(T _src)//编译错误
{
}
}


110,533

社区成员

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

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

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