首页 > 技术文章 > C#结构和类的区别

momj 2021-02-11 01:00 原文

1,类型

结构:值类型;存储在栈中

类:应用类型;存储在堆中

2,声明语法

结构:struct  类:class

相关示例:

//声明类 
public class PersonClass
    { 
        //字段、属性、方法、构造函数
        //不赘述
    }
//声明结构
public struct PersonStruct
{
        //字段、属性
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        private char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        public static void M1()
        {
            Console.WriteLine("我是结构中的静态方法");
        }
        public void M2()
        {
            Console.WriteLine("我是结构的非静态方法");
        }
        public PersonStruct(string name, int age, char gender)
        {
            //this.Name = name;
            //this.Age = age;
            //this.Gender = gender;
            this._name = name;
            this._age = age;
            this._gender = gender;
        }
}    

3,关于构造函数

在类中,

构造函数可以给字段赋值,也可给属性赋值;

构造函数可以重载

而在结构中.

构造函数必须给全部字段赋值,且只能给字段赋值;不能选择性的赋值;

4,默认构造函数

相同点:结构和类,默认都有一个无参的构造函数.

不同:

当类中新写一个构造函数,默认的无参构造函数,被干掉;若需要,需手动添加默认无参构造函数

在结构中新写的构造函数之后,默认的无参构造函数依然存在; 结构不能手动声明默认的构造函数

有且只有两个构造函数,一个默认无参的构造函数,一个全参数的构造函数

5,结构的new

只做了一件事情,调用结构的构造函数

6,继承和面向对象

结构不能继承于类,类也不能继承于结构

结构不具备面向对象的特征

而类才是面向对象的产物

7,调用对象

结构需创建对象,才能调用结构中的非静态方法

推荐阅读