构造函数

3.1 类和结构

   值类型:(charintfloat)、枚举类型和结构

   引用类型包括类(class)类型、接口类型、委托类型和数组类型

   值类型与引用类型的区别在于值类型的变量直接包含其数据,而引用类型的变量则存

储对象应用。

   类和结构实际上都是创建对象的模板。结构在内存中的存储方式(类是存储在堆(heap)上的引用类型,而结构是存储在堆栈(stack)上的值类型)、访问的方式和一些特征(如结构不支持继承)与类不同,但是语法上,结构与类非常相似,主要区别是使用关键字struct代替class

3.2 类成员

   3.2.1 数据成员

       数据成员包含了类的数据——字段、常量和事件

   3.2.2 函数成员

l  方法:方法是与某个类相关的函数,它们可以是实例方法,也可以是静态方法。

(1)       方法的声明:[modifiers] return_type MethodName[Parameters]

(2)       参数可以通过引用类型或值类型传递给方法

(3)       Ref参数:可以用ref关键字迫使值参数通过引用传送给方法。但是必须对传递给方法的参数进行初始化

(4)       Out参数:作用与ref关键字一样,不需要对传递给方法的参数进行初始化

(5)       方法的重载:方法的几个不同签名(名称、参数个数、参数类型)的版本,为了重载方法,只需声明同名但参数个数或类型不同的方法

注:两个方法不能仅在返回类型上区别

    两个方法不能仅根据参数是声明为ref还是out来区分

l  属性:是可以在客户机上访问的函数组。其访问方式与访问类的公共字段类似

l  构造函数:没有必要给类提供构造函数。一般情况下,如果没有提供任何构造函数,编译器会在后台创建一个默认的构造函数。它只能把所有的成员字段初始化为标准的默认值。

(1)       如果提供了带参数的构造函数,编译器就不会自动提供默认的构造函数,只有在没有定义任何构造函数时,编译器才会自动提供默认的构造函数。

(2)       可以使用this关键字区分成员字段和同名的参数

(3)       构造函数的名字必须与类同名;构造函数没有返回类型,它可以带参数,也可以不带参数

(4)       构造函数可以重载,从而提供初始化类对象的不同方法

(5)       静态构造函数,用Static修饰,用修饰静态字段和属性。一个类只允许有一个静态构造函数,在类实例化时加载,这时修饰符PublicPrivate失去作用

(6)       可以使用修饰符(PublicPrivateProtected

(7)       应用父类构造函数时用():base()方法,引用自身重载的构造函数使用():this()

 

 

 

 

 

 

class StructAndClass

    {

        public static void Main(string[] args)

        {

            MyChildClass myobj1 = new MyChildClass();

            Console.WriteLine();

            MyChildClass myobj2 = new MyChildClass(4);

            Console.WriteLine();

            MyChildClass myobj3 = new MyChildClass(5, 7);

            Console.ReadLine();

        }

    }

    class MyParentsClass

    {

        public MyParentsClass()

        {

            Console.WriteLine("In MyParentsClass()");

        }

        public MyParentsClass(int i)

        {

            Console.WriteLine("In MyParentsClass(int {0})",i);

        }

    }

    class MyChildClass : MyParentsClass

    {

        public MyChildClass()

        {

            Console.WriteLine("In MyChildClass()");

        }

        public MyChildClass(int i):base(i)

        {

            Console.WriteLine("In MyChildClass(int {0})",i);

        }

        public MyChildClass(int i, int y)

            : base(i)

        {

            Console.WriteLine("In MyChildClass(int {0},int {1}):base({0})",i,y);

        }

    }

 

输出:

In MyParentsClass()

In MyChildClass()

 

In MyParentsClass(int 4)

In MyChildClass(int 4)

 

In MyParentsClass(int 5)

In MyChildClass(int 5,int 7):base(5)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值