请教一个泛型的问题
我定义了一个类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#