除了向后兼容性之外,还有任何令人信服的理由:
(null as string) == null; //true
Run Code Online (Sandbox Code Playgroud)
Ben*_*igt 18
expr as T 手段
expr指向一个实例T,那么(T)expr(T)null, 除此以外(并且T必须是可以为空的类型)
无论你采取哪个分支,null as T收益率(T)null,任何T.
Eri*_*ert 12
你的问题含糊不清,基本上不负责任,所以我不打算回答.如果您真正想要的是关于设计考虑因素的文章as,请参阅:
http://blogs.msdn.com/b/ericlippert/archive/2010/09/16/is-is-as-or-is-as-is.aspx
如果您对C#类型系统中转换分析角色的更一般主题感兴趣,请参阅:
http://blogs.msdn.com/b/ericlippert/archive/tags/conversions/
jas*_*son 11
有没有令人信服的理由
是的,没有一个实例System.String可以将null其转换为非空实例.可以这样想:显然null is string应该评估为false,因为null没有引用的实例string.既然null is string是false,按照定义null as string,null as string应该是null.
超越向后兼容性
向后兼容什么?
让我转过来问你?string您认为null as string应该评估哪些非null实例?