C#中的结构和类

  类是在堆中创建的,某些时候,类中只包含极少的数据,因为管理堆造成的开销显得不合算。 所以C#中引入结构的概念是为了提高性能,提供给轻量级的“对象”,它是一个值类型,位于堆栈上;在语法上,结构和类是相似的。但是还是有很多不同的地方。主要体现在以下两个方面。

  •  不能象类一样,给结构声明一个无参数的默认构造函数。必须给结构的每一个变量显示的声明构造函数。

         struct Time
        {
            private int hours,minutes,seconds;
            public Time(int hh,int mm)
            {
                hours = hh;
                minutes = mm;
            }//编译时报错,因为seconds未初始化
        }

  •   在一个类中,可以在声明的同时初始化实例字段,但在struct中不能这样做,比如如下代码:


       struct Time
       {
             ...
             private int hours = 0;
             private int minutes;
             private int seconds;
        }

    总之,结构是为了实现值的概念,适用于适合复制的“轻量级”概念,而类适用于不适合复制的值的“重量级”概念。在.net framework中很多都是结构的例子,如:int long 和 float分别是System.Int32,System.Int64和 System.Single这三种结构的别名,也就是说你可以在这些结构上直接的调用方法,就像静态类一样。每一个结构都会提供一个ToString()方法。所以最好override这个方法,以便适应特定的需求。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值