gpt4 book ai didi

c# - 为什么我不能在 C# 中将 Type 变量传递给关键字 "default"?

转载 作者:太空宇宙 更新时间:2023-11-03 18:31:20 25 4
gpt4 key购买 nike

我要动态返回一个类型的默认值,但我不能将 default 关键字传递给类型类型的变量。

为什么不呢?

例如:

    private object GetSpecialDefaultValue(Type theType)
{
if (theType == typeof (string))
{
return String.Empty;
}
if (theType == typeof (int))
{
return 1;
}
return default(theType);
}

给我编译时错误:

The type or namespace name 'theType' could not be found (are you missing a using directive or an assembly reference?)

最佳答案

您只能将 default 与泛型类型参数一起使用。

The default keyword can be used in the switch statement or in generic code:

from default (C# Reference)

那个怎么样?

private object GetSpecialDefaultValue<T>()
{
var theType = typeof(T);

if (theType == typeof (string))
{
return String.Empty;
}
if (theType == typeof (int))
{
return 1;
}
return default(T);
}

更新

您可以尝试以下而不是 default,但我不能 100% 确定它会起作用

return theType.IsValueType ? (object)(Activator.CreateInstance(theType)) : null;

关于c# - 为什么我不能在 C# 中将 Type 变量传递给关键字 "default"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21979891/

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