这是一个测试用例
object a = null;
var b = Convert.ToString (null);
var c = Convert.ToString (a);
string d = Convert.ToString (null); // CLR chooses Convert.ToString(string value)
string e = Convert.ToString (a); // CLR chooses Convert.ToString(object value)
Run Code Online (Sandbox Code Playgroud)
问题是为什么CLR决定在第一种情况下将null解释为字符串?看来这个问题已在这里得到解答
这是另一个类似的案例.这些ifs都没有被触发
object x = null;
if (x is object)
{
Console.Write ("x is object");
}
if (x is string)
{
Console.Write ("x is string");
}
if (null is object)
{
Console.Write ("null is object");
}
if (null is string)
{
Console.Write ("null is string");
}
Run Code Online (Sandbox Code Playgroud)
答案是因为它必须选择一个引用类型(null 不适用于值类型),并且 everystring是 an object,但不是 everyobject都是 a string。有关更多信息,请参阅乔恩·斯基特对此问题的回答。
针对您的第二个示例,如果将 null 变量传递给is,则无论如何,它的计算结果将始终为 false。
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |