将变量'设置为类型'

时间:2013-05-21 14:20:56

标签: c#

今天遇到了这段代码:

EventFeed feed = null;
feed = service.Query(eventQuery) as EventFeed;

为什么最后as EventFeed?该函数的返回类型已经是EventFeed,所以我很难看到这样一个声明的好处。

我发现很难找到这个问题所以我在这里问。写这样的一行有什么好处?

5 个答案:

答案 0 :(得分:7)

feed可能会被声明为EventFeed,但service.Query(eventQuery)的结果可能不会。{/ p>

使用as可以停止抛出异常,如果表达式的结果无法转换为null,则最终会使用EventFeed

您可以在此处详细了解as - http://msdn.microsoft.com/en-us/library/cscsdfbt(v=vs.71).aspx

答案 1 :(得分:1)

这取决于Query调用返回的DataType。在这种情况下,as会尝试将结果转换为EventFeed类型,否则返回null

答案 2 :(得分:1)

您的查询可能会返回object

service.Query(eventQuery)

因此您将此对象转换为数据类型。

答案 3 :(得分:0)

如果Query方法签名指定它返回EventFeed(而不是返回基类但你知道它是EventFeed)。然后as是不必要的。

仅仅因为您将feed声明为EventFeed并不意味着您从Query返回的对象是。你可能试图在一个圆孔中放一个方形钉。

答案 4 :(得分:0)

根据你的编辑,如果service.Query已经返回'EventFeed',那么重铸它就什么都不做。看起来像重复的代码。