c#中的泛型咋那么多限制,居然不让new

谁学逆向工程 2013-01-05 11:19:19
在C++中是可以使用构造函数的,这里不让创建对象,这限制也太大了。几乎没法使用了!!
class vector<T>
{
private T buf;
public vector()
{
buf = new T();
}
}
1>------ 已启动生成: 项目: Csharp, 配置: Debug Any CPU ------
1>C:\Users\ys\Desktop\Csharp\Csharp\Program.cs(14,15,14,22): error CS0304: 变量类型“T”没有 new() 约束,因此无法创建该类型的实例
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
...全文
819 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mickers 2013-04-02
  • 打赏
  • 举报
回复
好精辟啊
njw1028 2013-01-05
  • 打赏
  • 举报
回复
引用 4 楼 wddw1986 的回复:
有一天楼主走进了飞机的驾驶舱,扫了一眼然后破口大骂,这什么破玩意,没有刹车,油门的脚踏板,而且还没有方向盘,这玩意能开吗,缺陷太大了。
LZ,这位仁兄虽然说得不好听,但是,我想他的话对你肯定有帮助
zld_baggio 2013-01-05
  • 打赏
  • 举报
回复
四楼淫才啊~~
hard_learner 2013-01-05
  • 打赏
  • 举报
回复
哈哈,4楼说的好
cheng2005 2013-01-05
  • 打赏
  • 举报
回复
有一天楼主走进了飞机的驾驶舱,扫了一眼然后破口大骂,这什么破玩意,没有刹车,油门的脚踏板,而且还没有方向盘,这玩意能开吗,缺陷太大了。
ohkuy 2013-01-05
  • 打赏
  • 举报
回复
你先理解了C#的语法规则再来抱怨吧
兔子-顾问 2013-01-05
  • 打赏
  • 举报
回复
一般如果只是初始化,可以不要new。 而是写 buf = default(T);
兔子-顾问 2013-01-05
  • 打赏
  • 举报
回复 1
你要new,但你如果T描述的类型没有无参构造函数,不是错误了么。所以,约束是必要的

class vector<T>:new()
{
    private T buf;
    public vector()
    {
        buf = new T();
    }
}

110,534

社区成员

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

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

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