C# 中变量的自动默认值

发布日期:2026-07-14 01:58:02   来源 : 杭州电子商务研究院    浏览量 :8
杭州电子商务研究院 发布日期:2026-07-14 01:58:02  
8

介绍

静态类型语言(如 C#)要求开发人员事先声明变量,编译器会在编译时负责初始化。本指南将回答的问题是这些变量用什么初始化,以及使用不同类型时需要注意什么。我们还将深入研究自动属性,因为它们与变量关系较远,我们可能还会研究默认值。

变量类别

有三种不同类型的变量,它们会根据其类型自动使用默认值进行初始化。

  1. 静态变量
  2. 类实例的实例变量
  3. 数组元素
  4. 引用类型(又称指针)

除了引用类型使用null进行初始化之外,其余类型都使用其默认构造函数提供的值进行初始化。

默认值的初始化由内存管理器或垃圾收集器在后台完成,所有位都设置为零。对于intfloatstring来说,所有设置为零的位都意味着不同的东西。

每种类型的默认值

  1. 任何引用类型:null
  2. 任何内置整数数字:0
  3. 任何内置浮点数:0
  4. 布尔值:false
  5. 字符:\0
  6. 枚举:表达式产生的值
  7. struct:所有值类型字段都设置为其默认值。
  8. 任何可空值类型:可空值类型的空值。

初始化

在 C# 7.1 版本之前,您可以使用默认运算符来初始化这样的变量。

      int a = default(int);
    

在7.1版本之后,可以使用默认字面量来初始化变量。

      int b = default;
    

让我们通过一个更复杂的例子来看一下这一点。

      using System;

namespace Pluralsight
{
    public class DefValues
    {           
        public static void Main()
        {
            int a = default;
            float b = default;
            double c = default;
            string d = default;
            var e = new System.Collections.ArrayList();

            Console.WriteLine($"The variable: {nameof(a)} has value: {a}");
            Console.WriteLine($"The variable: {nameof(b)} has value: {b}");
            Console.WriteLine($"The variable: {nameof(c)} has value: {c}");
            Console.WriteLine($"The variable: {nameof(d)} has value: {d}");
            Console.WriteLine($"The variable: {nameof(e)} has value: {e}");

            Console.ReadKey();
        }
    }
}
    

该应用程序产生的输出如下。

      The variable: a has value: 0
The variable: b has value: 0
The variable: c has value: 0
The variable: d has value:
The variable: e has value: System.Collections.ArrayList
    

nameof可用于获取特定变量、类、结构等的名称。

另一个例子是C# 中的自动属性。当您使用属性来描述类的内部状态时,重要的是要把事情做好。我们可以通过使用默认值初始化属性来做到这一点。此功能包含在 C# 6.0 版本中。

      using System;

namespace Pluralsight
{
    public class DefValuesAutoProp
    {
        public string Name { get; set; } = default;
        public string Age { get; set; } = default;
        public DateTime Date {get;set; } = DateTime.Now;

        public static void Main()
        {

            DefValuesAutoProp a = new DefValuesAutoProp();
            Console.WriteLine($"The instance of {nameof(DefValuesAutoProp)} called {nameof(a)} has properties Name: {a.Name} and Age: {a.Age}");
            Console.ReadKey();
        }
    }
}
    

产生的输出如下。

      The instance of DefValuesAutoProp called a has properties Name:  and Age:  and Date: 2/17/2020 11:48:05 AM
    

您甚至可以为只读自动属性设置默认值。

结论

在本指南中,我们学习了如何利用 C# 的默认值分配功能。我们还看到,类属性也可以使用此功能进行初始化。我希望本指南对您有所帮助,并感谢您阅读它。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据