📜  数据类型后的问号c#(1)

📅  最后修改于: 2023-12-03 15:10:19.480000             🧑  作者: Mango

C#数据类型后的问号

在C#中,数据类型后的问号表示该数据类型可以为null。也就是说,可以将null值赋给该数据类型的变量。

以下是数据类型后可添加问号的C#基本数据类型:

  • int?
  • double?
  • bool?
  • byte?
  • char?
  • DateTime?
  • decimal?
  • float?
  • long?
  • sbyte?
  • short?
  • uint?
  • ulong?
  • ushort?
int? nullableInt = null;
double? nullableDouble = null;
bool? nullableBool = null;
byte? nullableByte = null;
char? nullableChar = null;
DateTime? nullableDateTime = null;
decimal? nullableDecimal = null;
float? nullableFloat = null;
long? nullableLong = null;
sbyte? nullableSbyte = null;
short? nullableShort = null;
uint? nullableUint = null;
ulong? nullableUlong = null;
ushort? nullableUshort = null;

Console.WriteLine(nullableInt); // 输出 null
Console.WriteLine(nullableDouble); // 输出 null
Console.WriteLine(nullableBool); // 输出 null
Console.WriteLine(nullableByte); // 输出 null
Console.WriteLine(nullableChar); // 输出 null
Console.WriteLine(nullableDateTime); // 输出 null
Console.WriteLine(nullableDecimal); // 输出 null
Console.WriteLine(nullableFloat); // 输出 null
Console.WriteLine(nullableLong); // 输出 null
Console.WriteLine(nullableSbyte); // 输出 null
Console.WriteLine(nullableShort); // 输出 null
Console.WriteLine(nullableUint); // 输出 null
Console.WriteLine(nullableUlong); // 输出 null
Console.WriteLine(nullableUshort); // 输出 null

需要注意的是,在使用可空类型时,需要进行 null 值判断。

int? nullableInt = null;

if (nullableInt.HasValue)
{
    Console.WriteLine(nullableInt.Value);
}
else
{
    Console.WriteLine("nullableInt is null");
}

另外,在判断两个 Nullable 类型的变量是否相等时,不能直接使用 == 运算符,而应该使用 Equals 方法。

int? a = null;
int? b = null;

if (a.Equals(b))
{
    Console.WriteLine("a equals b");
}
else
{
    Console.WriteLine("a does not equal b");
}

可空类型在实际开发中的应用场景比较多。例如,在某些情况下,一个对象或变量可能没有值或者值为 null。此时,就可以使用可空类型。