当前位置:编程学习 > C#/ASP.NET >>

请教一个泛型的问题

我定义了一个类

class A<T>: where T: FieldType
{
 T field;
}


使用时
A<FieldType> a = new A<FieldType>();
这样字段field的类型被确定为FieldType
如果这个类有子类,那么field的类型由子类确定

在示例化这个父类时感觉麻烦,不像下面这这么简单
A a = new A()
能否在定义这个泛型类时,如果不带T类型,那么默认就是FieldType呢?
--------------------编程问答-------------------- A和A<>完全不同,不能混为一谈,你可以定义个非泛型的A,然后A的构造中,默认创建A<T>类型 --------------------编程问答-------------------- 有多麻烦,要调用多少次?写多一个方法来实例化不行吗?

class AFactory
{
    public static A<FieldType> Create()
    {
         return new A<FieldType>();
    }
}


var a = AFactory.Create(); --------------------编程问答-------------------- 关键A还有子类, 如果定义了一个A,那么A就不是A<>子类的父类了 --------------------编程问答-------------------- 虽然不知道楼主在说啥,还是不要和这问题扯上关系的好.. --------------------编程问答-------------------- 你看是不是这个意思

class AFactory
{
    public static A<FieldType> Create()
    {
         return new A<FieldType>();
    }
}

=>

class AFactory
{
    public static A<T> Create<T>() where T:FieldType
    {
         return new A<T>();
    }
}
--------------------编程问答-------------------- 在代码顶上添加 using B = ClassTest.A<ClassTest.TestClass>;
对于
    class A<T> where T : class
    {
        T field;
    }

    class TestClass { public string Name { get; set; } }
你就可以使用  B b = new B(); 
和 A<TestClass> a = new A<TestClass>();一样 --------------------编程问答-------------------- 楼主想要这样的效果:
static T Create<T>(params object[] args)
        {
            var obj = (T)Activator.CreateInstance(typeof(T), args);
            return obj;
        }

        static T Create<T>()
        {
            var obj = Activator.CreateInstance<T>();
            return obj;
        }
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,