Csharp/C#教程:为什么’Func ‘编译’Func ,其中TGeneric:IBase’没有?分享


为什么’Func ‘编译’Func ,其中TGeneric:IBase’没有?

为什么下面的集团错了?

public interface IBase { } public class ClassX : IBase { } public class ClassY { public static ClassX FunctionReturnX() { return new ClassX(); } } public class ClassZ where TGeneric : IBase { Func funcInterface = ClassY.FunctionReturnX; //Right Func funcGeneric = ClassY.FunctionReturnX; //Wrong } 

总之,您不能将ClassX为任何实现IBase类。 您只能保证能够将其投射到IBase本身。 考虑这个例子:

想象一下,你有一个实现IBase的类ClassA ,如下所示:

 public class ClassA : IBase { } 

现在, ClassZ看起来像这样(这不是真正的代码):

 public class ClassZ { Func funcInterface = ClassY.FunctionReturnX; //Right Func funcGeneric = ClassY.FunctionReturnX; //Wrong } 

ClassY.FunctionReturnX返回可以转换为IBase ClassX ,但不能将其ClassY.FunctionReturnXClassA 。 因此,您会收到并发症错误。

因为ClassX肯定是一个IBase ,但它可能不是TGeneric因为其他东西可能实现IBase并用于TGeneric

上述就是C#学习教程:为什么’Func ‘编译’Func ,其中TGeneric:IBase’没有?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/989036.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐