2016-02-03 28 views
-2

我正在分析静态分析器的结果。在c#中如果涉及方法调用,`as`运算符会抛出异常

在c#语言中可以as运算符抛出异常,如果涉及方法调用?即as是否阻止了所有异常?

string string_name = some_object.Deserialize(openstream) as string; 
+0

downvoters请在注释解释 – denfromufa

+4

你为什么这么问?此代码是否会抛出异常?你为什么认为方法调用是相关的? – CodeCaster

+0

我在分析静态分析器的结果 – denfromufa

回答

2

这不是as运算符,而是抛出异常的方法。

尝试:

var valueFromMethod = some_object.Deserialize(openstream); 
string string_name = valueFromMethod as string; 

您将获得第一行除外。如果投射失败,则返回null。它不会抛出异常。

4

不,最坏的情况下as将返回null如果无法进行转换。

一两件事情很可能

  1. 你的方法调用Deserialize抛出异常
  2. 东西尝试使用的string_name价值,并得到一个NullReferenceException