4.2C#语言的结构类型(Struct Type)

结构体是一种与类的定义非常相似的数据类型,但它是值类型。

访问修饰符  struct  结构体名称
{
    //结构体成员
}

设计结构类型时,具有与 类型相同的功能,但有以下例外:

  • 不能声明无参数构造函数。 每个结构类型都已经提供了一个隐式无参数构造函数,该构造函数生成类型的默认值。
  • 不能在声明实例字段或属性时对它们进行初始化。 但是,可以在其声明中初始化静态或常量字段或静态属性。
  • 结构类型的构造函数必须初始化该类型的所有实例字段。
  • 结构类型不能从其他类或结构类型继承,也不能作为类的基础类型。 但是,结构类型可以实现接口。
  • 不能在结构类型中声明终结器。

结构类型的实例化

在 C# 中,必须先初始化已声明的变量,然后才能使用该变量。 由于结构类型变量不能为 null(除非它是可为空的值类型的变量),因此,必须实例化相应类型的实例。 有多种方法可实现此目的。

通常,可使用 new 运算符调用适当的构造函数来实例化结构类型。 每个结构类型都至少有一个构造函数。 这是一个隐式无参数构造函数,用于生成类型的默认值。 还可以使用默认值表达式来生成类型的默认值。

如果结构类型的所有实例字段都是可访问的,则还可以在不使用 new 运算符的情况下对其进行实例化。 在这种情况下,在首次使用实例之前必须初始化所有实例字段。 下面的示例演示如何执行此操作:

public static class StructWithoutNew
{
    public struct Coords
    {
        public double x;
        public double y;
    }

    public static void Main()
    {
        Coords p;
        p.x = 3;
        p.y = 4;
        Console.WriteLine($"({p.x}, {p.y})");  // output: (3, 4)
    }
}

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/csharp/4029.html

发表评论

登录后才能评论