C# 动态类型的默认值?

C# 动态类型的默认值?,c#,c#-4.0,clr,C#,C# 4.0,Clr,声明为动态的变量的默认值是什么,例如private dynamic bana 在运行时确定类型时,是否可以依赖default()函数 我需要找到默认值的原因是,我声明了一个类的动态成员,我想将其设置一次(但不是作为readonly),然后多次使用它 在不知道运行时类型可能是什么的情况下,如何检查动态变量是否设置为默认值以外的其他值 谷歌对此一无所获:S 提前感谢。它是null dynamic blah; Console.Write(blah); // crash Console.Write(bl

声明为动态的变量的默认值是什么,例如
private dynamic bana

在运行时确定类型时,是否可以依赖
default()
函数

我需要找到默认值的原因是,我声明了一个类的动态成员,我想将其设置一次(但不是作为
readonly
),然后多次使用它

在不知道运行时类型可能是什么的情况下,如何检查动态变量是否设置为默认值以外的其他值

谷歌对此一无所获:S


提前感谢。

它是
null

dynamic blah;
Console.Write(blah); // crash
Console.Write(blah.GetType()); // NullRef

…这就是您的意思吗?

您可以使用
默认值(dyanmic.GetType())检查类型。
为什么不使用类型为dynamic的只读属性和类型为object的backing字段?这样你就可以空检查支持字段。@AkashKava,我没有在构造函数中设置值,所以我不能使用只读:/@gdoron,你的第一个答案是正确的:
default(dynamic)
@Sinker,这取决于你想完成什么,我更改了注释,因为我认为您需要其他内容。
Console.Write在传递
null
时不会崩溃,它只是不打印任何内容。>@EdS,您会得到以下错误:>{“调用在以下方法或属性之间不明确:'System.Console.Write(string)'和'System.Console.Write(char[])”}@Sinker:这不是crashHi@EdS,我使用
Console.Write()
方法得到
RuntimeBinderException
。在任何情况下,我认为它用动态类型清除了运行时发生的事情。我忘了添加:我正在使用.NET4。0@Sinker:是的,我是在评论默认值将为null的断言,它将导致
控制台中的崩溃。Write