当前位置: 首页 > 编程语言 > C#

ExcludeTypesinGenericConstraints(Possibly-)分享

时间:2023-04-10 14:34:45 C#

ExcludeTypesinGenericConstraints(Possible?)是否可以从泛型参数中可以使用的可能类型集合中排除特定类型?如果是这样的话。例如Foo():其中T!=bool表示除bool类型之外的任何类型。编辑为什么?以下代码是我尝试强制执行负约束。使用System.Collections.Generic;使用System.Linq;使用系统文本;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){varx1=Lifted.Lift("A");=提升.提升(真);}staticclassLifted{//这个是为了“排除”参数的推断类型变体[Obsolete("ThetypeboolcannotbeLifted",true)]staticpublicobjectLift(boolvalue){thrownewNotSupportedException();}//这个是为了“排除”指定Generic类型的变体。[Obsolete("ThetypeboolcannotbeLifted",true)]staticpublicLiftedLift(boolvalue){thrownewNotSupportedException();}staticpublicLiftedLift(Tvalue){returnnewLifted(value);}}publicclassLifted{内部只读T_Value;publicTValue{get{returnthis._Value;}}publicLifted(TValue){_Value=Value;}}}}如您所见,它涉及到一点点相信重载解析是正确的,以及一点点@jonskeet风格的恶魔代码。注释掉处理推断类型示例的那部分,它不起作用。拥有排除的通用约束会好得多。不,您不能像使用类型约束那样进行一次性排除。运行时可以这样做:以上就是C#学习教程:ExcludingTypesinCommonConstraints(maybe?)分享的全部内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多付出注意—publicvoidFoo(){if(typeof(T)==typeof(bool)){//抛出异常或适当处理。}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: