演员中的内容与众不同
这个问题在这里已经有了答案:
第一个( command.ExecuteScalar() as string; )将执行运行时尝试将ExecuteScalar()的结果转换为字符串。 如果结果类型不是string ,则会收到null 。 as关键字也只能执行引用转换,可空转换和装箱转换,所以你不能直接将它与非空值类型一起使用。
第二个( (string)command.ExecuteScalar(); )将直接进行string转换,并在结果值不是string InvalidCastException 。
比另一个(表演)更好吗?
一般来说,如果你知道结果总是一个字符串,那么使用第二个选项应该会提供(微不足道的)更好的性能。
这只是一个偏好问题,代码可读性?
这是我做出更强大差异化的地方。 as暗示,结果可能不是字符串,并且您将处理null检查。 使用直接转换表明您知道它始终是一个字符串,而其他任何内容都是错误,并应引发异常。
在我看来,这应该是决定选择的因素,因为它直接在代码中显示你的意图。
(string)command.ExecuteScalar()将抛出一个异常,如果command.ExecuteScalar()不能转换。
command.ExecuteScalar() as string将只返回null。
