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

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

小道5年前 (2018-11-30)C#学习2935

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

while语句:要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入。

while语句:要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入。

while语句:要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入。            Console.WriteLine("请输入用户...

while语句:用 while continue实现计算1到100之间的除了能被7整除之外所有整数的和。

while语句:用 while continue实现计算1到100之间的除了能被7整除之外所有整数的和。

while语句:用 while continue实现计算1到100之间的除了能被7整除之外所有整数的和。            int i = 1;/...

数组:​从一个整数数组中取出最大的整数。

数组:​从一个整数数组中取出最大的整数。

保存多个值。任意类型都可以声明数组。int[] nums = {5,3,8};//数组可以直接赋值。 int[] nums = new int[3];//也可以先声明数组 不赋值。   &...

函数:给我一个字符串,然后字符串使用我指定的分隔符来进行分割

函数:给我一个字符串,然后字符串使用我指定的分隔符来进行分割

函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们。要求的数据就叫参数,返回的执行结果就是返回值。有了函数写代码就像拼积...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。