可能是一个小孩子,但是
我试图使用C Sharp将"输出"参数传递给存储过程,并且在我使用以下语法传递"output"变量之前出现错误:
int? ROWID = 0;
ADAPTER.INSERT(val1, val2, ref ROWID);
Run Code Online (Sandbox Code Playgroud)
虽然问题解决了,但我无法理解为什么,当我尝试将值保存在存储过程返回的正常"int"中时,它会产生转换错误
int result = ROWID; // not correct
Run Code Online (Sandbox Code Playgroud)
所以,我要做的是:
int result = (int)ROWID; // correct
Run Code Online (Sandbox Code Playgroud)
究竟是什么"int?" 意思?
诠释?与...相同Nullable<int>,表示该值可以是整数,也可以是null.
这可能是因为您的数据库列设置为NULL,而不是NOT NULL.如果数据库中实际上可以有空值,则代码将失败,并在转换中出现异常.如果数据库中不能有空值,那么您应该更改该列的模式定义而不是NOT NULL,以便它映射到int而不是int?.
诠释?是一个可以为null的int(system.nullable),它可以接受null值.
转换的最佳方式是null coallesce:
int result = rowid ?? 0;
Run Code Online (Sandbox Code Playgroud)