C#泛型入门问题

Cowboy22 2011-12-09 12:55:48
从C++转过来的,在C#也想实现一些实用功能

public class MyClass<T>
{
public T m_data = new T(); 能否在这里new T()?
public void foo(){m_data.foo();} 能否调用T类型的foo成员函数?
}

...全文
130 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cowboy22 2011-12-09
  • 打赏
  • 举报
回复
被打败了,还是换OO来实现。。。
阿非 2011-12-09
  • 打赏
  • 举报
回复
2.0不行
Cowboy22 2011-12-09
  • 打赏
  • 举报
回复
dynamic 这么用吗?
public class MyNode<T>where T:new()
{
public T m_data = new T();
public String MyToString(){return m_data.ToString();}
public void foo() {
dynamic data = m_data;
data.foo();
}
}
但还报错:
错误 2 找不到类型或命名空间名称“dynamic”(是否缺少 using 指令或程序集引用?) E:\lib\wince\protocolLib\PktParser.cs 30 13 protocolLib

查到C#4.0中引入了动态类型机制,我是vs2005,不知支不支持C#2.0?
Cowboy22 2011-12-09
  • 打赏
  • 举报
回复
加where T: new ()后,可以new了
阿非 2011-12-09
  • 打赏
  • 举报
回复
你可以使用

dynamic
Cowboy22 2011-12-09
  • 打赏
  • 举报
回复
C#的模板这么弱吗?
Cowboy22 2011-12-09
  • 打赏
  • 举报
回复
T.ToString()可以,但自定义的不行
阿非 2011-12-09
  • 打赏
  • 举报
回复
public class MyNode<T>
=>
public class MyNode<T> where T: new ()
Cowboy22 2011-12-09
  • 打赏
  • 举报
回复
public class MyNode<T>
{
public T m_data = new T();
public String MyToString(){return m_data.ToString();}
}

new T()也不行,通不过:
错误 2 变量类型“T”没有 new() 约束,因此无法创建该类型的实例 E:\lib\wince\protocolLib\PktParser.cs 27 27 protocolLib
阿非 2011-12-09
  • 打赏
  • 举报
回复
public T m_data = new T(); 能否在这里new T()?

可以

public void foo(){m_data.foo();} 能否调用T类型的foo成员函数?

不可以

111,094

社区成员

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

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

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