功能上没有区别。实际上,两者都这样做:
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,它选择枚举重载。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)