C# 泛型 : Constraining T where T : Object doesn't compile; Error: Constraint cannot be special class 'object'

标签 c# .net generics object clr

当我用这样的对象约束 T 时:

public interface IDoWork<T> where T : Object
{
    T DoWork();
}

我得到错误:

Constraint cannot be special class 'object'

这是否意味着与编译后的以下内容存在隐含差异?

public interface IDoWork<T> // where T : Object
{
    T DoWork();
}

最佳答案

如果要将泛型类型限制为引用类型,请使用: class

public interface IDoWork<T> where T : class
{
    T DoWork();
}

这将禁止泛型成为值类型,例如 int 或结构。

关于C# 泛型 : Constraining T where T : Object doesn't compile; Error: Constraint cannot be special class 'object' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10644703/

相关文章:

c# - 确定两点是否接近

c# - 线程中的定时器问题

c# - XmlReader 类中的 `ReadString` 与 `ReadContentAsString` 有什么区别?

c# - C# 泛型如何影响具有原语的集合

c# - 如何通过蓝牙BLE发送和接收数据?

c# - 单用户数据库选项

c# - 在 C# 应用程序中使用 MsgPack 自定义序列化程序

c# - 在 C# 中获取组合框文本

具有返回被调用对象的方法的 Java 接口(interface)?

java - 如何将嵌套的 Scala 集合转换为嵌套的 Java 集合