struct与class区别

Class和Struct之间的共同点 和 区别?
共同点:都能够包含数据成员以及函数成员的数据结构。

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpStruct
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.1.  定义一个struct结构。(构造 析构  结构的调用 )
            Instance ex = new Instance(10,10) ;
            Console.WriteLine(ex.x);
            Console.ReadKey();
        }
        public struct Instance
        {
            public int x;
            public int y;
            public Instance(int a,int b)
            {
                this.x = a;
                this.y = b;
            }
        }
    }
}

区别:

  • Class为引用类型,继承自System.Object,引用类型在堆上分配地址,可以设置为空(null);Struct为值类型,继承自System.ValueType.在堆栈上分配地址,不可以设置为空(null);堆栈的执行效率比堆高,但是堆栈的资源有限,不适合处理大的逻辑对象,因此Struct适用于作为经常使用的一些数据的新类型。Class比较适合大的和复杂的数据;

  • Struct是密封的,不能派生和继承,也就是没有protected和protected internal 以及sealed关键字;

  • Struct可以不用new初始化,在声明时就进行了初始化工作,Struct实例无参的时候可以无new,但如果时有参的构造函数时,就要用到new,所有的变量默认为0或者null,但是Class必须使用new关键字进行初始化;

  • 类作为参数类型传递,传递的是引用地址,struct作为参数类型传递,传递的是值。

  • Struct程序员只能申明有参的构造函数,不能包含显示默认构造函数,因为编译器会自动提供一个构造函数,不能声明析构函数;Class有默认的构造函数,可以申明无参构造函数,有析构函数。

  • calss实例由垃圾回收机制保证内存的回收处理,而struct变量使用完之后立即自动解除内存分配。

附:
你认为在游戏制作过程中,那些数据定义成类,那些数据定义成结构。为什么?
结构:一些底层的信息,如角色的座标,血量,颜色等轻量级基础属性;
类:复杂的可变的数据。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章