C# 结构体 struct 的基本知识

2021-06-22 22:02

阅读:481

标签:运算符   public   信息   定义   sys   封装   操作符   引用传递   包括   

结构就是几个数据组成的数据结构,它与类共享几乎所有相同的语法,但结构比类受到的限制更多

结构是一种值的类型,通常用来封装一组相关的变量,结构中可以包括构造函数、常量、字段、方法、属性、运算符、事件和嵌套类型等。但如果要同时包括上述几种成员,则应该考虑使用类。结构实际是将多个相关的变量包装成为一个整体使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。例如,把公司里的职员看作一个结构体,可以将个人信息放入结构体中,主要包含姓名、年龄、出生年月、性别、籍贯、婚否、职务。

在 C# 中的结构与传统的 C 或 C++ 中的结构不同。结构具有以下特点:

  • 结构是的类型。
  • 向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。
  • 结构的实例化可以不使用new运算符。结构可以声明构造函数,但它们必须带参数。当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。
  • 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
  • 一个结构不能从另一个结构或类继承。所有结构都直接继承自System.ValueType,后者继承自System.Object
  • 结构可以实现接口。接口可实现一个或多个接口。
  • 在结构中初始化实例字段是错误的。// 不能在结构中初始化字段。
  • 结构成员不能指定为 abstractvirtualprotected

说明:

在结构声明中,除非字段被声明为const或static,否则无法初始化。

实例:

class Program
{
    public struct Rect//定义一个矩形结构
    {
        public double width;//矩形的宽
        public double height;//矩形的高
        
        public Rect(double x, double y)
        {
            width = x;
            height = y;
        }
       
        public double Area()
        {
            return width * height;
        }
    }
    static void Main(string[] args)
    {
        Rect rect1;//创建矩形结构
        rect1.width = 5;//为矩形宽赋值
        rect1.height = 3;//为矩形高赋值
        Console.WriteLine("矩形面积为:" + rect1.Area());
        Rect rect2 = new Rect(6, 4);//使用构造函数实例化矩形结构
        Console.WriteLine("矩形面积为:" + rect2.Area());
    }

}

输出:

矩形面积为:15
矩形面积为:24
请按任意键继续. . .

结构有以下几个基本的不同点:

  • 类是引用类型,结构是值类型。
  • 结构不支持继承。
  • 结构不能声明默认的构造函数。


参考:
1. [link-01](https://www.runoob.com/csharp/csharp-struct.html) // 菜鸟教程
2. 《C# 入门到精通》 -> P142

C# 结构体 struct 的基本知识

标签:运算符   public   信息   定义   sys   封装   操作符   引用传递   包括   

原文地址:https://www.cnblogs.com/huvjie/p/14916056.html


评论


亲,登录后才可以留言!