【发布时间】:2010-05-27 10:22:38
【问题描述】:
这很奇怪,也许有人可以解释发生了什么,或者这是一个错误(尽管我倾向于认为这可能只是 C# 的一些复杂问题)。
以下代码抛出错误“无法隐式转换类型'uint?'到'uint'。”:
public void Test(UInt32? p)
{
UInt32 x = p;
}
但是,此代码可以正常工作:
public void Test(UInt32? p)
{
UInt32 x = p ?? 1;
}
嗯?为什么这行得通?为什么合并运算符会导致 UInt32 的隐式转换? (可为空)到 UInt32(不可为空),而第一条错误消息说这些类型之间没有隐式转换?
【问题讨论】: