什么是C#/ CLI的等效于C#的默认值(T)?

时间:2009-12-26 04:10:02

标签: .net generics c++-cli default

我正在使用一些C ++ / CLI代码(新语法)并尝试声明泛型类型,并希望将成员变量设置为默认值。

在C#中:

class Class<T>
{ 
    T member = default(T);
}

CLI中的等价物是什么?

generic<typename T> public ref class Class 
{
public:
    Class() : member(default(T))  // <-- no worky
    {
    }    
private:
        T member;
};

2 个答案:

答案 0 :(得分:11)

有趣的是语法使它看起来像这样:T()。它确实需要添加一个拷贝构造函数。

generic<typename T> 
    public ref class Class 
{
public:
    Class() : member(T())  
    {
    } 

    Class(Class^ c)
    {
        member = c->member;
    }

private:
    T member;
};

修改 DOH 这也有效(在C#中已经存在了这么长时间我忘了在C ++中NULL和0是一样的,因此不需要不同的值和引用类型默认值):

generic<typename T> 
    public ref class Class 
{
public:
    Class() : member(0)  
    {
    } 

    Class(Class^ c)
    {
        member = c->member;
    }

private:
    T member;
};

答案 1 :(得分:1)

但是私有成员是不是已经使用默认构造函数初始化了?