相关疑难解决方法(0)

即使没有空检查,使用"as"而不是强制转换是否有意义?

在开发博客,在线代码示例和(最近)甚至是一本书中,我一直在寻找像这样的代码:

var y = x as T;
y.SomeMethod();
Run Code Online (Sandbox Code Playgroud)

或者更糟糕的是:

(x as T).SomeMethod();
Run Code Online (Sandbox Code Playgroud)

这对我来说没有意义.如果你确定它x是类型T,你应该使用直接演员:(T)x.如果您不确定,可以使用as但需要null在执行某些操作之前进行检查.以上代码所做的就是将(有用)InvalidCastException变为(无用)NullReferenceException.

我是唯一一个认为这是公然滥用as关键字的人吗?还是我错过了一些明显的东西,上面的模式实际上有意义?

c# casting type-conversion

350
推荐指数
10
解决办法
4万
查看次数

转换:(NewType)与Object作为NewType

可能重复:
使用CLR中的'as'关键字进行转换

这两个演员之间究竟有什么区别?

SomeClass sc = (SomeClass)SomeObject;
SomeClass sc2 = SomeObject as SomeClass;
Run Code Online (Sandbox Code Playgroud)

通常,它们都应该显式转换为指定的类型?

.net c#

85
推荐指数
5
解决办法
8123
查看次数

标签 统计

c# ×2

.net ×1

casting ×1

type-conversion ×1