今天遇到了这段代码:
EventFeed feed = null;
feed = service.Query(eventQuery) as EventFeed;
为什么最后as EventFeed
?该函数的返回类型已经是EventFeed
,所以我很难看到这样一个声明的好处。
我发现很难找到这个问题所以我在这里问。写这样的一行有什么好处?
答案 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',那么重铸它就什么都不做。看起来像重复的代码。