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

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

小道6年前 (2018-11-30)C#学习4055

(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关键字和析构函数” 的相关文章

数组:将一个字符串数组输出为|分割的形式

数组:将一个字符串数组输出为|分割的形式

数组:将一个字符串数组输出为|分割的形式,比如“王钢蛋|李铁蛋|铁锤”            string[] s = { "王钢...

String类常用函数

String类常用函数

String类常用函数ToLower():得到字符串的小写形式。注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。ToUpper():得到字符串的大写形式; Trim()去掉字符串两端的空白。s1.Equals(s2, StringCom...

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

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

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

机器人:具有模糊判断

机器人:具有模糊判断

自己动手写聊天机器人,能够回答不同城市的天气、回答感情问题、问的次数过多还会饿死,提问可以模糊提问(包含指定关键词)。问“天气:北京”就回复“今天北京天气很好。”。        static void&nbs...