Parameters.Add(string,object)和Parameters.AddWithValue之间的区别

Parameters.Add(string,object)和Parameters.AddWithValue之间的区别,第1张

Parameters.Add(string,object)和Parameters.AddWithValue之间的区别

功能上没有区别。实际上,两者都这样做:

return this.Add(new SqlParameter(parameterName, value));

他们不赞成使用旧参数的原因

AddWithValue
是增加了清晰度,以及第二个参数是
object
,这使得某些人不能立即看出
Add
调用重载,并且导致了截然不同的行为。

看一下这个例子:

 SqlCommand command = new SqlCommand(); command.Parameters.Add("@name", 0);

乍一看,它看起来像是在调用

Add(string name, object value)
重载, 但不是 。这就是
Add(string name,SqlDbType type)
超载!这是因为0可以隐式转换为枚举类型。所以这两行:

 command.Parameters.Add("@name", 0);

 command.Parameters.Add("@name", 1);

实际上导致两种不同的方法被调用。

1
不能隐式转换为枚举,因此它选择
object
重载。使用
0
,它选择枚举重载。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5567183.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存