今天遇到了这段代码:
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是。您可能正在尝试将方形钉子放入圆孔中。