类型后面的问号的目的是什么(例如:int?myVariable)?

通常,问号的主要用途是针对条件x ? "yes" : "no" x ? "yes" : "no"

但是我看到了它的另一种用法,但是找不到这种用法的解释? 例如运算符。

public int? myProperty
{
   get;
   set;
}

#1楼

它声明类型为可为空。


#2楼

它是Nullable<int>的简写。 Nullable<T>用于允许将值类型设置为null 。 值类型通常不能为null


#3楼

这意味着所讨论的值类型是空的类型

可空类型是System.Nullable结构的实例。 可空类型可以表示其基础值类型的正确值范围,以及附加的空值。 例如,可以为Nullable<Int32> (发音为“ Int32的Nullable”)分配从-2147483648到2147483647之间的任何值,也可以为其分配空值。 可以为Nullable<bool>分配值true,false或null。 在处理包含可能未分配值的元素的数据库和其他数据类型时,为数字和布尔类型分配null的功能特别有用。 例如,数据库中的布尔值字段可以存储值true或false,也可以未定义。

 class NullableExample { static void Main() { int? num = null; // Is the HasValue property true? if (num.HasValue) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } // y is set to zero int y = num.GetValueOrDefault(); // num.Value throws an InvalidOperationException if num.HasValue is false try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } } } 

#4楼

可空类型

可空类型是System.Nullable结构的实例。 可为空的类型可以表示其基础值类型的正常值范围,以及一个附加的null值 。 例如,可以为[ Nullable<Int32> ](发音为“ Int32的Nullable”)分配从-2147483648到2147483647之间的任何值,也可以为其分配空值。 可以为[ Nullable<bool> ]分配值true或false或null。 当处理包含可能未分配值的元素的数据库和其他数据类型时,为数字和布尔类型分配null的功能特别有用。 例如,数据库中的布尔值字段可以存储值true或false,也可以未定义。


#5楼

x ? "yes" : "no"

声明一个if语句。 此处: x表示布尔条件; 之前的部分当时的句子,后一部分是别的句子。

例如,

int?

声明一个可为null的类型,并表示它之前的类型可能具有null值。


#6楼

实际用法:

public string someFunctionThatMayBeCalledWithNullAndReturnsString(int? value)
{
  if (value == null)
  {
    return "bad value";
  }

  return someFunctionThatHandlesIntAndReturnsString(value);
}

#7楼

为了补充上面的答案,这是一个代码示例

struct Test
{
    int something;
}
struct NullableTest
{
    int something;
}
class Example
{
    public void Demo()
    {
        Test t = new Test();
        t = null;

        NullableTest? t2 = new NullableTest();
        t2 = null;
    }
}

这将导致编译错误:

错误12无法将null转换为“ Test”,因为它是不可为空的值类型

请注意,NullableTest没有编译错误。 (注意t2声明中的?)


#8楼

int?Nullable<int>简写。 两种形式可以互换。

Nullable<T>是可与值类型T配合使用的运算符,以使其接受null

如果您不知道它: 值类型是接受诸如intboolchar 等值的类型

它们不能接受对值的引用:如果将它们分配为null ,而不是可以接受的引用类型 ,则它们将生成编译时错误。

你为什么需要那个? 因为有时您的值类型变量可能会接收到某些操作不正常的返回的空引用,例如从数据库返回的丢失或未定义的变量。

我建议您阅读Microsoft文档,因为它很好地涵盖了该主题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值