香蕉视频app

Keep on going never give up.

Let's Go

C# 學習筆記(24)構造函數中this和base的使用

C#Lonely2019-05-08 21:00:0056次0條

關于構造函數中的this代碼示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Person
    {
        public string Name { get; set; } //姓名
        public char Sex { get; set; } //性別
        public int Age { get; set; } //年齡
        public string Tel { get; set; } //電話
        public string Address { get; set; } //住址
        
        //一般的構造函數,里面是一堆參數,方便實例化的時候給參數賦值(俗稱初始化)
        public Person(string name, char sex, int age, string tel, string address) //構造函數
        {
            Name = name;
            Sex = sex;
            Age = age;
            Tel = tel;
            Address = address;
        }
        
        //構造函數是可以有重載的
        //帶this的構造函數,借“主構造函數”(參數最多的)的參數來用,不需要的參數用任意相同類型的值來補,目的就是為了避免大括號里面每個參數再賦值一遍,造成代碼冗余
        public Person(string name, char sex, int age) : this(name, sex, age,"","") //this關鍵字作用:(1)代表當前類的對象。(2)在類當中顯示的調用本類的構造函數,語法 :this()
        {
        
        }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person("張三",'男',22,"13888888888","花果山水簾洞");
            Console.WriteLine("我叫:{0},性別:{1},年齡:{2},電話:{3},住址:{4}", p1.Name, p1.Sex, p1.Age, p1.Tel, p1.Address);
            Person p2= new Person("王燕", '女', 18);
            Console.WriteLine("我叫:{0},性別:{1},年齡:{2}", p2.Name, p2.Sex, p2.Age);
            Console.ReadKey();
        }
    }
}

運行結果:

image.png


關于構造函數中的base代碼示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Person
    {
        public string Name { get; set; } //姓名
        public char Sex { get; set; } //性別
        public int Age { get; set; } //年齡
 
        //一般的構造函數,里面是一堆參數,方便實例化的時候給參數賦值(俗稱初始化)
        public Person(string name, char sex, int age) //構造函數
        {
            Name = name;
            Sex = sex;
            Age = age;
        }
        
    }
    
    class Student: Person //繼承Person類
    {
        public double Chinese { get; set; }
        public double Math { get; set; }
        public double English { get; set; }
        
        //如果Person類內有自己定義有參的構造方法,則Student類的構造方法必須要加:base繼承這個構造方法!因為默認的Student:base(空)構造方法已經被干掉了!
        //因為Person類沒有定義無參的構造函數,所以不加:base會提示Person不包含0個參數的構造函數
        public Student(string name, char sex, int age) : base(name, sex, age)//base里的參數,前面Person類構造函數的參數里面寫什么,這里就寫什么。
        {
        
        }
        
        //base里的參數,前面Person類構造函數的參數里面寫什么,這里就寫什么。前提是Person類有對應的這三個參數。因為這個Person類參數少,所以就寫滿三個就行,不然還要補空值。
        public Student(string name, char sex, int age, double chinese, double math, double english) : base(name, sex, age)
        {
            Chinese = chinese;
            Math = math;
            English = english;
        }
        
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Student stu_1 = new Student("趙六", '男', 20);
            Console.WriteLine("我叫:{0},性別:{1},年齡:{2}", stu_1.Name, stu_1.Sex, stu_1.Age);
            Student stu_2 = new Student("胖虎", '男', 20,95,98.5,60);
            Console.WriteLine("我叫:{0},性別:{1},年齡:{2},語文成績:{3},數學成績:{4},英語成績:{5}", stu_2.Name, stu_2.Sex, stu_2.Age, stu_2.Chinese, stu_2.Math, stu_2.English);
            Console.ReadKey();
        }
    }
}

香蕉视频app 運行結果:

image.png


構造函數的作用是:初始化對象。

構造函數this和base的作用是:

香蕉视频app 1、this相當于繼承了自己類的最完整的那個構造函數,目的就是避免代碼冗余。

2、base相當于繼承了父類的構造函數,目的也是避免代碼冗余。

暗錨,解決錨點偏移

文章評論

    嘿,來試試登錄吧!