default(T) 返回 null,其中 T 继承自 DataContext
本文关键字:其中 继承 DataContext null 返回 default | 更新日期: 2023-09-27 18:31:07
我的示例代码:
public class GenericClass<T> : IDisposable where T: System.Data.Linq.DataContext
{
public T context{ get; private set; }
public GenericClass()
{
this.context= default(T); // default(T) return null
// code
}
public void Dispose()
{
context.Dispose();
}
}
使用 GenericClassess 示例代码:
using (GenericClasss <DataAccessDataContext> dataAccess = new GenericClasss <DataAccessDataContext>())
{
//code
}
其中DataAccessDataContext
是 .dbml(继承 System.Data.Linq.DataContext)并具有默认构造函数
对不起,如果这是简单的事情,我没有注意到。谢谢。
这是
引用类型的默认值的预期行为,default(T)
,其中T
引用类型是 null
。
如果您不想从泛型类型创建新对象,则应使用 new()
关键字:
public class GenericClass<T> : IDisposable where T: System.Data.Linq.DataContext, new()
并在构造函数中调用new T()
:
public GenericClass()
{
this.context = new T();
}
编译器必须知道T
具有默认构造函数。
如果您尝试实例化新上下文,则可以执行以下操作:
public GenericClass()
{
this.context = new T();
}
使用泛型new()
约束定义类:
public class GenericClass<T> : IDisposable where T: System.Data.Linq.DataContext, new()
{
...
和使用
this.context = new T();
见 http://msdn.microsoft.com/en-us/library/bb384067.aspx