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

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

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

(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://www.daobk.com/post/126.html

分享给朋友:

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

提示用户输入X值和Y值,将这两个值交换。

提示用户输入X值和Y值,将这两个值交换。

提示用户输入X值和Y值,将这两个值交换。            Console.WriteLine("请输入X的值:");//提示用户输入X值。  ...

while语句:输出1~10个数。do...while语句:输出1~10个数。

while语句:输出1~10个数。do...while语句:输出1~10个数。

while语句:输出1~10个数。            int s = 0;//定义一个整型变量     ...

​while语句:不断要求用户输入一个数字(假定用户输入的都是正整数)

​while语句:不断要求用户输入一个数字(假定用户输入的都是正整数)

while语句:不断要求用户输入一个数字(假定用户输入的都是正整数),当用户输入end的时候显示刚才输入的数字中的最大值。设一个变量int max,初始值为0,用户每输入一次就把用户输入的和max比较一下,如果输入的比max大,则让max等于用户输入。    ...

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

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

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