C# 为什么可以';t I隐式转换';int?&x27;至';int';?

C# 为什么可以';t I隐式转换';int?&x27;至';int';?,c#,C#,我试图将一个表的Id放入一个int变量中,但它并没有正确工作 @foreach (var item in Model){ int i = item.Ticket_Priority; // actualy trying to get item.Ticket_Priority ID in integer butit is not working} 错误消息为“无法将“int”隐式转换为“int”。存在显式转换(是否缺少强制转换?) 感谢您的支持。错误消息为您提供了所需的信息 item

我试图将一个表的Id放入一个int变量中,但它并没有正确工作

@foreach (var item in Model){
    int i = item.Ticket_Priority; //    actualy trying to get item.Ticket_Priority ID in integer butit is not working}
错误消息为“无法将“int”隐式转换为“int”。存在显式转换(是否缺少强制转换?)


感谢您的支持。

错误消息为您提供了所需的信息

item.Ticket\u Priority
是一个
可空的
int?
而不仅仅是一个
int
。您可以使用
.HasValue
.Value
属性来确定是否有可用的值,然后使用它

 // assuming you want a default value of 0
 int i = item.HasValue ? item.Value : 0;  

您可以使用??运算符:

int? i = 2;
int i2 = i ?? 0; // ?? checks if i is null

这是哪种编程语言?C#?错误消息是什么?这是Razor(ASP.NET MVC)吗?在@和模型引用之间,似乎是可能的。您需要为任何人提供更多代码来帮助您。模型中有什么?Item类中有什么?是的,它在C#中。错误消息是“无法隐式地将'int'转换为'int'。存在显式转换(是否缺少强制转换?),可以使用null合并运算符更简洁地编写此转换:int i=item.Value??0@RobLevine感谢您提醒我有关空合并运算符的事情;我很少有机会使用它:)@RobLevine,而且在语义上使用@Rawling-yes;你挑吧。简洁的或语义上的。事实上,十有八九,我更喜欢明显的语义,即你的建议。@Jedidja,如果item为null,你的例子会抛出异常吗?是否需要交换0:item.Value?或;)