zoukankan      html  css  js  c++  java
  • C#:结构

    1. 简单示例

    // 定义结构
    public struct Person
    {
        public string name;
        public int age;
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();    // 实例化结构
            p.name = "Rain Man";
            p.age = 26;
            Console.WriteLine(p.name + ", " + p.age.ToString());    // 输出: Rain Man, 26
        }
    }

    2. 结构的构造函数

    结构同样可以拥有构造函数,例如上例可以使用下面的程序实现;

    public struct Person
    {
        public string name;
        public int age;
        public Person(string n, int a)
        {
            this.name = n;
            this.age = a;
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person("Rain Man", 26);            // 实例化并调用构造函数
            Console.WriteLine(p.name + ", " + p.age.ToString());    // 输出: Rain Man, 26
        }
    }

    3. 结构的实例化可以不使用 new 关键字

    public struct Person
    {
        public string name;
        public int age;
        public Person(string n, int a)
        {
            this.name = n;
            this.age = a;
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Person p;    // 由于未使用new关键字,因此不会调用Person的构造函数
            p.name = "Rain Man";
            p.age = 26;
    
            Console.WriteLine(p.name + ", " + p.age.ToString());    // 输出: Rain Man, 26
        }
    }

    4. 结构的运算符重载

    public struct Person
    {
        public string name;
        public int age;
        public Person(string n, int a)
        {
            this.name = n;
            this.age = a;
        }
    
        // 运算符重载必须为:static
        // 函数的返回类型为: Person
        // 函数的参数类型为: Person
        public static Person operator +(Person p1, Person p2)
        {
            Person p;
            p.name = p1.name + " and " + p2.name;
            p.age = p1.age + p2.age;
            return p;
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person("Tom", 26);
            Person p2 = new Person("Jerry", 10);
    
            Person p = p1 + p2;   // 使用运算符(+)重载
            Console.WriteLine(p.name + ", " + p.age.ToString());    // 输出: Tom and Jerry, 36
        }
    }

    5. 结构与类的区别

    从上面的示例可以看出结构和类很相似,一般来讲结构能够实现的功能,类都可以实现。 结构体作为一种自定义的数据类型,具有以特点:

    • 值类型,相比“类”而言对内存开销较小;
    • 不能够继承,不能够作为一个类的“基类”;
    • 结构体继承自object类。
  • 相关阅读:
    spring异常
    springboot+mybatis
    mybatis初识
    模板引擎Dot
    mysql数据库操作
    1. 安装Oracle,配置环境 2. 实现查询From子句 3. 实现查询where子句 4. 实现查询order by子句
    (1)Set集合 (2)Map集合 (3)异常机制
    (1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型
    (1)线程的常用方法 (2)线程的同步机制 (3)网络编程的常识
    (1)I/O流 (2)线程
  • 原文地址:https://www.cnblogs.com/rainman/p/3652943.html
Copyright © 2011-2022 走看看