gpt4 book ai didi

C# - 静态类型不能用作类型参数

转载 作者:IT王子 更新时间:2023-10-29 04:21:41 28 4
gpt4 key购买 nike

我有一个通用类可以帮助我检查参数值:

internal sealed class Argument<T>
where T : class
{
private void TraceAndThrow(Exception ex)
{
new InternalTraceHelper<T>().WriteError(ex);
throw ex;
}

internal void ThrowNull(object value, string argName)
{
if (ReferenceEquals(value, null))
{
TraceAndThrow(new ArgumentNullException(argName));
}
}

internal void ThrowIf(bool condition, string argName)
{
if (condition)
{
TraceAndThrow(new ArgumentException(null, argName));
}
}


internal void ThrowNotInEnum(Type enumType, object value)
{
if (!Enum.IsDefined(enumType, value))
{
TraceAndThrow(new ArgumentOutOfRangeException(Resources.ArgEnumIllegalVal.InvariantFormat(value)));
}
}
}

但是当我尝试将它与静态类一起使用时:

internal static class Class1
{
private static Argument<Class1> _arg;
}

我遇到了这个错误(在编译时):

static types cannot be used as type arguments

我做错了什么?

最佳答案

这是故意的。

静态类试图防止不当使用,所以在几乎所有情况下,您不能在通常需要类型的实例的情况下使用它们...并且包括类型参数。

参见 "Static classes" of the C# 6 spec 部分对于可以引用静态类类型的非常有限的情况。

关于C# - 静态类型不能用作类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5858591/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com