如何检查泛型方法参数是否为值类型?

pen*_*ake 9 .net c# generics value-type reference-type

有没有办法检查变量是否是引用类型的值类型?

想像:

private object GetSomething<T>(params T[] values) 
{
    foreach (var value in values)
    {
        bool is ValueType; // Check if 'value' is a value type or reference type
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 17

bool isValueType = typeof(T).IsValueType;
Run Code Online (Sandbox Code Playgroud)

完成工作......如果有任何值,则无关紧要null,即使对于空数组也是如此.

  • 警告:如果你想提供一个病态的边缘情况,让`T`成为`object`,并让值为boxed结构. (6认同)