C# 面试题 目录

C# 中可空类型 (Nullable Types) 的概念和用法

推荐答案

在C#中,可空类型(Nullable Types)允许值类型(如intbooldouble等)具有null值。可空类型是通过在值类型后面加上?符号来定义的。例如,int?表示一个可空的整数类型。

示例代码

-- -------------------- ---- -------
---- ----------- - -----
-- ----------------------
-
    ------------------------ --- - - -------------------
-
----
-
    ------------------------ -- -------
-

主要用法

  1. 声明可空类型:在值类型后面加上?,如int?bool?等。
  2. 检查是否有值:使用HasValue属性来判断可空类型是否包含有效值。
  3. 获取值:使用Value属性来获取可空类型的值,但必须先检查HasValue,否则会抛出InvalidOperationException异常。
  4. 默认值:可空类型的默认值是null

本题详细解读

可空类型的背景

在C#中,值类型(如intbool等)通常不能为null,因为它们表示具体的值。然而,在某些情况下,我们需要表示一个值类型可能没有值的情况。例如,数据库中的某个字段可能为空,这时就需要使用可空类型。

可空类型的实现

C#中的可空类型是通过System.Nullable<T>结构实现的,其中T是值类型。int?实际上是System.Nullable<int>的简写形式。

可空类型的属性和方法

  • HasValue:返回一个布尔值,表示可空类型是否包含有效值。
  • Value:获取可空类型的值。如果HasValuefalse,访问Value会抛出异常。
  • GetValueOrDefault():返回可空类型的值,如果HasValuefalse,则返回默认值。

可空类型的操作

可空类型可以与普通值类型进行混合操作,C#编译器会自动处理这些操作。例如:

可空类型的装箱和拆箱

可空类型在装箱时会根据HasValue的值来决定是否装箱为null或值类型的装箱对象。拆箱时,如果拆箱对象为null,则拆箱为可空类型的null值。

可空类型的应用场景

  1. 数据库操作:当数据库字段允许为空时,可以使用可空类型来表示。
  2. API返回值:当某个方法可能返回无效值时,可以使用可空类型。
  3. 配置项:当配置项可能未设置时,可以使用可空类型来表示。

通过使用可空类型,C#程序员可以更灵活地处理可能缺失的值,避免不必要的异常和错误。

纠错
反馈