C#语法:其中TResponse,new()

Leo*_*vin 3 .net c# syntax function

public TResponse ExecuteCustomMessage<TResponse>(IModbusMessage request)
    where TResponse : IModbusMessage, new()
Run Code Online (Sandbox Code Playgroud)

以上是什么意思?我以前从来没有见过这样的东西,虽然我已经在C#编写了几年了...它应该是一个函数,但我不确定这是什么<>和关键字where和new()在末尾...

bry*_*mac 9

它是对TResponse泛型类型的约束,它实现了接口IModbusMessage并具有无参数构造函数.

其中T :(接口名称) type参数必须是或实现指定的接口.可以指定多个接口约束.约束接口也可以是通用的.

其中T:new()类型参数必须具有公共无参数构造函数.与其他约束一起使用时,必须最后指定new()约束.

另外,正如其他人所指出的,我建议你阅读泛型文档(评论中的SLaks指出).