如何在 C# 中将 null 值设置为 int?
Posted
技术标签:
【中文标题】如何在 C# 中将 null 值设置为 int?【英文标题】:How to set null value to int in c#? 【发布时间】:2013-10-31 13:55:55 【问题描述】:int value=0;
if (value == 0)
value = null;
如何将value
设置为上面的null
?
任何帮助将不胜感激。
【问题讨论】:
Why type "int" is never equal to 'null'?的可能重复 请注意,'value' 是 C# 中的关键字。提供的此代码是合法的 C#,但使用起来可能是个坏主意。 msdn.microsoft.com/en-us/library/vstudio/a1khb4f8.aspx @Aric TenEyck 并不是说它是正确的,但一些框架方法参数的名称为value
。例如,Enum.Parse
、String.IndexOf
和(逻辑上)Dictionary<,>.TryGetValue
。
【参考方案1】:
此外,您不能在条件赋值中使用“null”作为值。比如……
bool testvalue = false;
int? myint = (testvalue == true) ? 1234 : null;
失败:Type of conditional expression cannot be determined because there is no implicit conversion between 'int' and '<null>'.
因此,您也必须强制转换 null... 这有效:
int? myint = (testvalue == true) ? 1234 : (int?)null;
更新(2021 年 10 月):
从 C# 9.0 开始,您可以使用“Target-Typed”条件表达式,并且该示例现在可以工作,因为 c# 9 可以通过在编译时评估表达式来预先确定结果类型。
【讨论】:
优秀。解决了我今晚遇到的一个问题。 好吧,严格来说,这不是问题的答案,但我觉得它真的很有用。有人知道这种行为的原因吗? @Cirelli94 三元运算符?:
尝试推断结果的类型。第一部分得到int
,第二部分得到null
。它不能隐含地解决这两个问题。但是,当将 null 转换为 Nullable<int>
(简写 int?
)时,会找到 int
到 int?
的隐式转换并将其用于最终赋值。【参考方案2】:
int ? index = null;
public int Index
get
if (index.HasValue) // Check for value
return index.Value; //Return value if index is not "null"
else return 777; // If value is "null" return 777 or any other value
set index = value;
【讨论】:
【参考方案3】: public static int? Timesaday get; set; = null;
或
public static Nullable<int> Timesaday get; set;
或
public static int? Timesaday = null;
或
public static int? Timesaday
或者只是
public static int? Timesaday get; set;
static void Main(string[] args)
Console.WriteLine(Timesaday == null);
//you also can check using
Console.WriteLine(Timesaday.HasValue);
Console.ReadKey();
null 关键字是表示空引用的文字,它不引用任何对象。 在编程中,可空类型是某些编程语言类型系统的一个特性,它允许将值设置为特殊值 NULL,而不是数据类型的通常可能值。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/null https://en.wikipedia.org/wiki/Null
【讨论】:
【参考方案4】:int不允许为null,使用-
int? value = 0
或使用
Nullable<int> value
【讨论】:
【参考方案5】:声明你的整型变量可以为空
例如:int? variable=0; variable=null;
【讨论】:
【参考方案6】:您不能将int
设置为null
。请改用可为空的 int (int?
):
int? value = null;
【讨论】:
【参考方案7】:在 .Net 中,您不能将 null
值分配给 int
或任何其他结构。请改为使用Nullable<int>
,或简称为int?
:
int? value = 0;
if (value == 0)
value = null;
进一步阅读
Nullable Types (C# Programming Guide)【讨论】:
我试图从即时窗口分配 null 以进行调试。但它没有用。如何做到这一点? @mahemadhi 可能出于同样的原因,您不能在常规代码中执行此操作。如果一个变量被声明为int
,它不能接收null
作为值,即使在调试时也是如此。您需要将其声明为int?
。
变量声明为nullable
。然而在即时窗口中,我无法分配 null。以上是关于如何在 C# 中将 null 值设置为 int?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server Management Studio 中将列值设置为 NULL?