黑马程序员_C#中类和结构体的区别

“----------ASP.Net+Android+IOS开发、Net培训、期待与您交流!----------”

namespace test12
{
    class ClassA 
    {
        public void output() 
        {
            Console.WriteLine("success");
        }
    }
    class ClassB 
    {
        public ClassB(int a) 
        {
            Console.WriteLine(a);
        }
        public void output() 
        {
            Console.WriteLine("success");
        }
    }

    struct StructA 
    {
        //StructA()   //错误,结构不能包含显式的无参数构造函数,这是结构体默认的构造函数,与类不同,这个不能重写。
        //{
        //   Console.WriteLine("success");
        //}
        public void output()
        {
            Console.WriteLine("success");
        }

    }
    struct StructB
    {
        public StructB(int a) 
        {
            Console.WriteLine(a);
        }
        public void output()
        {
            Console.WriteLine("success");
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            ClassA A = new ClassA();
            A.output();
            //ClassB B = new ClassB();//错误,ClassB没有0个参数的构造函数
            //B.output();
            ClassB B = new ClassB(5);
            B.output();


            StructA SA = new StructA(); //调用结构体默认的构造函数
            SA.output();

            StructB SB = new StructB();//同类不一样,这种实例化的方式也是对的。
            SB.output();

            StructB SC = new StructB(5);//调用结构体带参的构造函数
            SC.output();

            Console.ReadKey();

            /*
              类的构造函数。
                (1)当类中没有写构造函数时,实例化类的时候会默认调用父类System.Object的无参构造函数。
                (2)当类中只写了带参的构造函数时,实例化类的时候只能调用这个重载的构造函数,而继续调用无参的构造函数会提示错误。
              结构体的构造函数
                (1)结构体中不能写无参的构造函数,只能写带参的构造函数,这同类的构造函数不一样。
                (2)在结构体中只有带参的构造函数时,可以调用无参的构造函数来实例化结构体,这个同类也不一样。
             如何选择结构还是类
            (1)堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
            (2)结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有1000个点对象的数组,则将为引用每个对象分配附加的内存。                              在此情况下,结构的成本较低。
            (3)在表现抽象和多级别的对象层次时,类是最好的选择
            (4)大多数情况下该类型只是一些数据时,结构时最佳的选择
            * */
        }
    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值