class之new和ctor意义及作用域

new关键字计算class占用的字节数,并在堆上分配空间。

class 的ctor默认构造函数实现class内部所有成员的默认值赋值;如果你定义了带参构造函数,那么编译器不会自动生成默认构造;假设类要被继承,尽管派生 类实例化按照派生类的带参构造方式实例化,但是对象生成树还是调用基类的默认构造,所以,一个类如果没有默认构造,该类不能被派生。

作用域(变量或者方法):
private:仅在类内部可访问
protected:仅在类及其派生类内部访问
internal:仅在同一个程序集(dll)内可以访问。程序集内可以包含多个命名空间,每个命名空间也可以包含很多类。
protected internal:当前程序集,或者当前程序集内类的派生类中(可以在不同的命名空间内) 我感觉不到和internal有什么区别
using System ;

namespace DemoConsole
{
     public  class ConsoleBasic
     {
         private  void  MethodPrivate (){}                             //仅在本类内部可见
         protected  void  MethodProtected (){}                         //仅在本类和其派生类中可见
         internal  void  MethodInternal (){}                         //在本程序集内可见
         protected  internal  void  MethodProtectedInternal (){}         //在本程序集,或本程序集内定义该变量的派生类中可见
         protected  string token ; //="privilege";
         internal  string international ;
         public  string version= "4.0" ;
        
         public  void  ShowFormat ()
         {
            Console .ForegroundColor = ConsoleColor .Cyan ;
            Console .BackgroundColor = ConsoleColor .Blue ;
            
            Console . WriteLine ( "\n{0}:\tC Format {0:C}\tF3 Format {0:F3}\n" +
                               "{1}:\t\tN Format {1:N}\tx Format {1:x}\t{1:E}" ,
                               99989.9876 , 9999 );
             /*
99989.9876:     C Format ¥99,989.99    F3 Format 99989.988
9999:           N Format 9,999.00       x Format 270f   9.999000E+003
             */
         }
     }
    
     public  class ConsoleExtend:ConsoleBasic
     {
         public  void  Show ()
         {
             MethodProtected ();
             MethodInternal ();
             MethodProtectedInternal ();
             base .version= "5.0" ;
             base .token= "low level" ; //派生类中可以访问基类的protected成员
             base .international= "US" ;
         }
     }
}

namespace InternalDemo
{
     public  class ClassInOtherNamespace
     {
         public  void  MethodInOtherNamespace ()
         {
            DemoConsole .ConsoleExtend ce =  new DemoConsole . ConsoleExtend ();
            ce .version= "in other namespace" ; //可以在另一命名空间内直接访问public成员
            ce .international= "United States" ;
            ce . MethodInternal (); //在同一个程序集内internal成员都可以访问;
            ce . MethodProtectedInternal ();
         }
     }
}

转载于:https://www.cnblogs.com/flaaash/archive/2011/04/21/2024395.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值