这可能是一个微不足道的问题,我已经看到了Cast的几种不同变体.
示例一:
command.ExecuteScalar() as string;
Run Code Online (Sandbox Code Playgroud)
示例二:
(string)command.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)
两者都会产生ExecuteScalar()不同的影响,所以问题是与数据库交互时是否比另一个更理想?
first(command.ExecuteScalar() as string;)将执行运行时尝试将结果ExecuteScalar()转换为字符串.如果结果类型不是a string,您将收到null.as关键字也只执行引用转换,可空转换和装箱转换,因此您不能直接使用非可空值类型.
第二个((string)command.ExecuteScalar();)将string直接进行转换,InvalidCastException如果结果值不是a则引发string.
一个比另一个好(性能)?
一般来说,如果你知道结果总是一个字符串,那么使用第二个选项应该提供(微不足道)更好的性能.
这只是一个偏好问题,代码易读性?
这是我做出更强分化的地方.使用as表明结果可能不是字符串,您将处理null检查.使用直接转换表明您知道它始终是一个字符串,而其他任何错误都应该引发异常.
在我看来,这应该是决定选择的因素,因为它直接在代码中显示了你的意图.