Dan*_*ely 3 c# resharper casting
Resharper为此处的as cast提供了可能的空引用警告.它是否有可能实际发生,或者是否在if语句中检查是否排除它?
IMyObjectType someObject = null; //MyObjectType implements IMyObjectType
if (someObject is MyObjectType)
{
(someObject as MyObjectType).SomePropery = true;
}
Run Code Online (Sandbox Code Playgroud)
编辑:哎呀我在这里错了 - 这是正确的答案:
的is类型兼容性操作者检查和无效所以ReSharper的不应该在该特定情况下发出警告.
证明:
using System;
class Example
{
static void Main()
{
Example example = null;
// this is always "false"
Console.WriteLine(example is Example);
}
}
Run Code Online (Sandbox Code Playgroud)
更多证据:
如果提供的表达式为非null,则 is表达式求值为true ,并且可以将提供的对象强制转换为提供的类型,而不会引发异常.
老答案: 这是不正确的,但为了完整起见,我会把它留在这里.
是的,someObject仍然可以null在这里.
这只检查变量的类型:
someObject is MyObjectType
Run Code Online (Sandbox Code Playgroud)
someObject可能的类型很好,MyObjectType但可能无处可指.换句话说,引用的类型与该引用是否指向对象的实例之间存在差异.
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |