今天遇到了这段代码:
EventFeed feed = null;
feed = service.Query(eventQuery) as EventFeed;
为什么as EventFeed
在最后?该函数的返回类型已经是 a EventFeed
,所以我很难看到这样的声明的好处。
我发现很难搜索这个问题,所以我在这里问。写这样一行有什么好处?
今天遇到了这段代码:
EventFeed feed = null;
feed = service.Query(eventQuery) as EventFeed;
为什么as EventFeed
在最后?该函数的返回类型已经是 a EventFeed
,所以我很难看到这样的声明的好处。
我发现很难搜索这个问题,所以我在这里问。写这样一行有什么好处?
feed
可能被声明为EventFeed
但结果service.Query(eventQuery)
可能不是。
使用as
停止抛出异常,null
如果表达式的结果不能转换为EventFeed
.
您可以在此处阅读更多信息as
- http://msdn.microsoft.com/en-us/library/cscsdfbt(v=vs.71).aspx
这取决于Query
调用返回的 DataType。as
在这种情况下,将尝试将结果转换为EventFeed
类型,否则返回null
。
您的查询可能会返回一个object
service.Query(eventQuery)
所以您将此对象转换为您的数据类型。
根据您的编辑,如果 service.Query 已经返回“EventFeed”,则将其重铸没有任何作用。看起来像重复的代码。
如果方法签名指定Query
它返回一个EventFeed
(而不是返回一个基类,但你知道它是一个EventFeed
)。那么这as
是不必要的。
仅仅因为您声明feed
为 anEventFeed
并不意味着您返回的对象Query
是。您可能正在尝试将方形钉子放入圆孔中。