如何在开放泛型类型中定义构造函数?

时间:2010-12-23 19:47:24

标签: c# generics constructor

我试图在开放泛型类型上创建一个构造函数以供派生类型使用,但我要么不知道怎么做,要么不可能 - 不确定哪个。

 public struct DataType<T> : IDataType {

    private T myValue;
    private TypeState myState;

    internal DataType<T>(T initialValue, TypeState state) {
        myValue = initialValue;
        myState = state;
    }
 }

非常感谢任何帮助!

科特

编辑:构造函数最初发布为私有,这是错误的,应该受到保护。但是 - 结构中不允许保护,所以我将其更改为内部。

2 个答案:

答案 0 :(得分:7)

构造函数没有泛型参数,就像类的任何普通方法一样,它可以使用T,但也不是通用的。

public class DataType<T> : IDataType {

    private T myValue;
    private TypeState myState;

    protected DataType(T initialValue, TypeState state) {
        myValue = initialValue;
        myState = state;
    }
 }

请注意,不能继承结构,并且不能通过继承类来调用私有构造函数。同时更改这两个以使其正常工作。

答案 1 :(得分:0)

private DataType(T initialValue, TypeState state)
{
     myValue = initialValue;
     myState = state;
}