如何在C#中将null值设置为int?


70
int value=0;

if (value == 0)
{
    value = null;
}

如何设置valuenull上面?

任何帮助将不胜感激。



1
请注意,“值”是C#中的关键字。给出的代码是合法的C#,但可能不好使用。 msdn.microsoft.com/en-us/library/vstudio/a1khb4f8.aspx
Aric TenEyck

@Aric TenEyck没说对,但某些框架方法参数的名称为value。例如,Enum.ParseString.IndexOf和(逻辑上)Dictionary<,>.TryGetValue
Lance U. Matthews

Answers:


109

在.Net中,您不能分配一个 nullint或任何其他结构。而是使用Nullable<int>int?简称:

int? value = 0;

if (value == 0)
{
    value = null;
}

进一步阅读


我试图从即时窗口分配null进行调试。虽然没有用。如何做到这一点?
Mahendran '18

@mahemadhi可能出于相同的原因,而您无法在常规代码中这样做。如果将变量声明为,即使在调试int时也无法将其null作为值接收。您需要将其声明为int?
pswg

声明变量nullable。但是在即时窗口中,我无法指定null。
Mahendran

99

此外,您不能在条件分配中使用“空”作为值。例如..

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;

7
优秀的。解决了我今晚遇到的一个问题。
罗恩

2
好的,这并不是严格地解决问题的方法,但是我发现它确实很有用。有人知道这种行为的原因吗?
Cirelli94

16

您不能将设置intnull。请改用可为null的int(int?):

int? value = null;

2

int不允许为null,请使用-

int? value = 0  

或使用

Nullable<int> value

1
 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/zh-cn/dotnet/csharp/language-reference/keywords/null https://en.wikipedia.org/wiki/Null



0
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; }
        }

-1

使用Null.NullInteger例如:private int _ReservationID = Null.NullInteger;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.