C#——静态类型不能作为类型参数我有一个泛型类可以帮我检查参数值内部密封类ArgumentwhereT:class{privatevoidTraceAndThrow(Exceptionex){newInternalTraceHelper().WriteError(ex);扔前;}internalvoidThrowNull(objectvalue,stringargName){if(ReferenceEquals(value,null)){TraceAndThrow(newArgumentNullException(argName));}}internalvoidThrowIf(boolcondition,stringargName){if(condition){TraceAndThrow(newArgumentException(null,argName));}}internalvoidThrowNotInEnum(TypeenumType,objectvalue){if(!Enum.IsDefined(enumType,value)){TraceAndThrow(newArgumentOutOfRangeException(Resources.ArgEnumIllegalVal.InvariantFormat(value)));但是当我尝试将它与静态类一起使用时:internalstaticclassClass1{privatestaticArgument_arg;我得到这个错误(在编译时):静态类型不能用作类型参数我做错了什么?这是故意的。静态类试图防止不当使用,因此在几乎所有情况下,您都不能在通常期望类型实例的地方使用它们,并且包括类型参数。请参阅C#4规范的第10.1.1.3.1节,了解一组非常有限的可以引用静态类类型的情况。泛型仅适用于实例,不适用于静态类。由于无法实例化静态类,因此永远无法使用静态类型创建Argument。因为静态类没有实例成员,所以我关心的是我要用它们做什么。我相信,除此之外你不能使用静态类作为泛型参数,我相信你需要使用扩展方法而不是泛型类。您做错的是使用静态类型作为泛型类型参数。以上就是C#学习教程的全部内容:C#——静态类型不能作为类型参数。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
