4

今天遇到了这段代码:

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

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

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

4

5 回答 5

7

feed可能被声明为EventFeed但结果service.Query(eventQuery)可能不是。

使用as停止抛出异常,null如果表达式的结果不能转换为EventFeed.

您可以在此处阅读更多信息as- http://msdn.microsoft.com/en-us/library/cscsdfbt(v=vs.71).aspx

于 2013-05-21T14:22:28.927 回答
1

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

于 2013-05-21T14:22:39.780 回答
1

您的查询可能会返回一个object

service.Query(eventQuery)

所以您将此对象转换为您的数据类型。

于 2013-05-21T14:22:48.867 回答
0

根据您的编辑,如果 service.Query 已经返回“EventFeed”,则将其重铸没有任何作用。看起来像重复的代码。

于 2013-05-21T14:24:14.980 回答
0

如果方法签名指定Query它返回一个EventFeed(而不是返回一个基类,但你知道它是一个EventFeed)。那么这as是不必要的。

仅仅因为您声明feed为 anEventFeed并不意味着您返回的对象Query是。您可能正在尝试将方形钉子放入圆孔中。

于 2013-05-21T14:23:37.823 回答