整数? c#,ref中使用的,到底是什么

发布于 2024-08-13 17:51:04 字数 395 浏览 4 评论 0原文

可能是一个小孩子、小孩子的问题,但

我试图使用 C Sharp 将“输出”参数传递给存储过程,并收到错误,直到我使用以下语法传递“输出”变量:

int? ROWID = 0;
ADAPTER.INSERT(val1, val2, ref ROWID);

虽然问题已解决,但我只能不明白为什么,当我尝试将值保存在存储过程返回的正常“int”中时,它会给出转换错误

int result = ROWID; // not correct

所以,我要做的是:

int result = (int)ROWID; // correct

“int”到底是什么?意思是?

might be a kiddy, biddy question but

I was trying to pass an "output" parameter to a Stored Procedure using C Sharp and was getting an error until I passed the "output" variable using following syntax:

int? ROWID = 0;
ADAPTER.INSERT(val1, val2, ref ROWID);

Though problem is solved, I just can't understand why, when I try to hold the value in a normal "int" returned by the stored proc it gives a conversion error

int result = ROWID; // not correct

So, what I have to do is:

int result = (int)ROWID; // correct

What exactly does "int?" mean?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

哆兒滾 2024-08-20 17:51:04

int? 是一个可为 null 的 int。请阅读使用可空类型(C# 编程指南)

顺便说一句,如果您没有阅读整个指南,至少请检查 ROWID 变量的 HasValue 和 Value 属性。

int? is a nullable int. Read Using Nullable Types (C# Programming Guide).

By the way, if you don't read the whole guide, at least check out the HasValue and Value properties on your ROWID variable.

偏爱你一生 2024-08-20 17:51:04

整数?与Nullable相同,表示该值可以是整数,也可以是 null 值。

这可能是因为您的数据库列设置为 NULL,而不是 NOT NULL。如果数据库中实际上可能存在空值,则您的代码将失败并出现强制转换异常。如果数据库中不能有空值,那么您应该将该列的架构定义更改为非 NOT NULL,以便它映射到 int 而不是 int?。

int? is the same as Nullable<int>, and means that the value can either be an integer, or the value null.

It's probably because your database column is set to NULL, instead of NOT NULL. If there can actually be null values in your database, your code will fail with an exception on the cast. If there can't be nulls in the database then you should change the schema definition for that column not NOT NULL so that it maps to int instead of int?.

时光磨忆 2024-08-20 17:51:04

整数?是一个可为空的 int (system.nullable),它可以接受 null 值。

最好的转换方法是空合并:

int result = rowid ?? 0;

int? is a nullable int (system.nullable), it can accept the value null.

Best way to convert is to null coallesce:

int result = rowid ?? 0;
神仙妹妹 2024-08-20 17:51:04

int? 是一个可为空的整数。有关详细信息,请参阅有关可空类型的 MSDN 页面。

int? is a nullable integer. See the MSDN page on Nullable Types for details.

静水深流 2024-08-20 17:51:04

它是一个可为 null 的类型。

在这里阅读有关它们的更多信息:

可空类型

It's a nullable type.

Read more about them here:

Nullable Types

青衫儰鉨ミ守葔 2024-08-20 17:51:04

我建议这样:

        int? ROWID = 0;
        ........
        int result = ROWID.HasValue ? ROWID.Value : 0;

I would suggest this:

        int? ROWID = 0;
        ........
        int result = ROWID.HasValue ? ROWID.Value : 0;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文