nei*_*ldt 5 c# mysql null mysql-parameter
我正在添加一个要用MySQL存储过程调用的参数
List<MySqlParameter> MyParams = new List<MySqlParameter>();
MyParams.Add(new MySqlParameter("MyId", 0));
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,当我查看MyParams时,MyId值在单步执行代码时会被转换为null.有没有人知道为什么这是因为如果我从一个int变量中分配值如下所示它是好的
int id = 0;
List<MySqlParameter> MyParams = new List<MySqlParameter>();
MyParams.Add(new MySqlParameter("MyId", id));
Run Code Online (Sandbox Code Playgroud)
好吧,你陷入了c#的角落,文字0可以隐式转换Enum
隐式枚举转换允许将decimal-integer-literal 0转换为任何枚举类型
因此,new MySqlParameter("MyId", 0)编译成MySqlParameter(string,MySqlDbType)而不是MySqlParameter(string,object)作为结果,您的值0被忽略.
new MySqlParameter("MyId", id)这是有效的,因为枚举的隐式转换仅在值literal不适用时才有效variables.所以很明显,这会被编译成MySqlParameter(string,object)预期的结果.
new MySqlParameter("MyId", (object)0)//this solves the problem
Run Code Online (Sandbox Code Playgroud)
或这个
New MySqlParameter("MyId", MySqlDbType.Int).Value = 0
Run Code Online (Sandbox Code Playgroud)
BTW @Suraj Singh指出你可能不得不使用@MyId而不是MyId.
希望这可以帮助