当前位置:首页 > C#学习 > 正文内容

C# 构造函数this关键字和析构函数

小道7年前 (2018-11-30)C#学习4346

(1)构造函数

<1>除非是static,否则编译器将会给每一个没有构造函数的类指定一个默认的构造函数

<2>构造函数private时候,类不能被实例化

<3>派生类可以通过base来显式的调用基类的构造函数,当无显式调用时,编译器会自动的调用基类的默认构造函数

<4>基类没有默认构造函数,派生类必须显式的调用base

<5>构造函数可以标记为 public,protected,private,internal,protected internal

<6>实例构造函数,静态构造函数。初始化静态类或者非静态类中的静态变量就必须定义静态构造函数。

<7>私有构造函数

私有构造函数存在的意义是为了防止被实例化,当一个类不想被声称为静态类,同时里面都是静态成员时候,可以使用静态构造函数。


析构函数:

1)不能在结构中定义析构函数。只能对类使用析构函数。

2)一个类只能有一个析构函数。

3)无法继承或重载析构函数。

4)无法调用析构函数。它们是被自动调用的。

5)析构函数既没有修饰符,也没有参数。

using System;


namespace 析构函数
{
    class Program
    {
        static void Main(string[] args)
        {
            Person P1 = new Person("张三",20,1,'男');
            P1.Say();
            Person P2 = new Person("小花",'女');
            P2.Say();
            Console.ReadKey();
        }
    }
    class Person
    {
        private string _name;//字段
        private int _age;//字段
        private int _num;//字段
        private char _gender;//字段
        public Person(string name,int age,int num,char gender)//构造函数
        {
            this.Name = name;
            this.Age = age;
            this.Num = num;
            this.Gender = gender;
        }
        public Person(string name,char gender):this(name,18,0,gender)//通过使用this关键字调用上面的构造函数(参数要对应),来使用构造函数。好处可以减少多余代码.
        {

        }
        ~Person()//析构函数
        {
            Console.WriteLine("析构函数,主要用于释放资源。");
            Console.ReadKey();
        }

        public string Name//属性
        {
            get
            {
                return _name;
            }

            set
            {
                _name = value;
            }
        }
        public int Age//属性
        {
            get
            {
                return _age;
            }

            set
            {
                _age = value;
            }
        }

        public int Num//属性
        {
            get
            {
                return _num;
            }

            set
            {
                _num = value;
            }
        }

        public char Gender//属性
        {
            get
            {
                return _gender;
            }

            set
            {
                if (value !='男'&&value!='女')
                {
                    _gender = '无';
                }
                _gender = value;
            }
        }

        public void Say()//方法
        {
            Console.WriteLine("我叫{0},今年{1}岁,我是第{2}号,我是{3}生.",Name,Age,Num,Gender);
        }
    }
}

输出结果:

image.png

扫描二维码推送至手机访问。

版权声明:本文由小道发布,如需转载请注明出处。

本文链接:https://daobk.com/post/126.html

分享给朋友:

“C# 构造函数this关键字和析构函数” 的相关文章

foreach语句:依次读取数组中的元素。

foreach语句:依次读取数组中的元素。

foreach和for的区别:for可以不逐个遍历,比如每隔一个遍历一个,或者可以从后向前遍历。只能(只应该)在foreach对集合进行读,而不应该写。foreach语句:依次读取数组中的元素。         ...

字符串的分割:从日期字符串("2008-08-08")中分析出年、月、日;

字符串的分割:从日期字符串("2008-08-08")中分析出年、月、日;

string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;string[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分割符分割为字符串数组( opt...

面向对象概念

面向对象概念

面向对象不是取代面向过程的。类、对象。“人”是类,“张三”是“人”这个类的对象。类是抽象的,对象是具体的。按钮就是类,某个按钮就是对象。对象可以叫做类的实例(Instance)。类就像int,对象就像10。字段Field(和某个对象相关的变量),字段就是类的状态。人这个类有姓名、年龄、身高等字段。类...

定义类:一个类可有有多个实例。

定义类:一个类可有有多个实例。

一个类可有有多个实例。类就是把一系列相关的变量(状态)、行为定义为一个整体。字段记录的就是这个对象相关的数据。    class Program     {     ...