我有一个 SQL 查询,它只返回一个字段 - 一个 INT 类型的 ID。
而且我必须在 C# 代码中将它用作整数。
哪种方式更快并且占用更少的内存?
int id;
if(Int32.TryParse(command.ExecuteScalar().ToString(), out id))
{
// use id
}
或
int? id = (int?)command.ExecuteScalar();
if(id.HasValue)
{
// use id.Value
}
或
int? id = command.ExecuteScalar() as int?;
if(id.HasValue)
{
// use id.Value
}
最佳答案
这三种性能之间的差异可以忽略不计。瓶颈是将数据从数据库移动到您的应用程序,而不是简单的转换或方法调用。
我会选择:
int? id = (int?)command.ExecuteScalar();
if(id.HasValue)
{
// use id.Value
}
它较早失败,如果有一天人们更改命令以返回字符串或日期,至少它会崩溃,您将有机会修复它。
我也只使用简单的 int
cast IF 我一直希望命令返回一个结果。
请注意,与执行标量相比,我通常更喜欢返回输出参数,因为执行标量感觉很脆弱(第一行第一列是返回值的约定不适合我)。
关于c# - Int32.TryParse() 或 (int?)command.ExecuteScalar(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1174930/