zoukankan      html  css  js  c++  java
  • C#基本语法学习(七)

    this和base

     C#的this关键字表示当前类的当前实例,this关键字通常用于把类的当前实例作为参数传递给别的方法。由于this表示一个类的实例,所以在类的静态成员中,不能使用this关键字。

      1     public class Student
      2     {
      3         public Student(string n, string s, int a, int g)
      4         {
      5             name = n;
      6             sex = s;
      7             age = a;
      8             grade = g;
      9         }
     10 
     11         private string _name;
     12         public string name
     13         {
     14             get { return _name; }
     15             set { _name = value; }
     16         }
     17 
     18         private string _sex;
     19         public string sex
     20         {
     21             get { return _sex; }
     22             set { _sex = value; }
     23         }
     24 
     25         private int _age;
     26         public int age
     27         {
     28             get { return _age; }
     29             set { _age = value; }
     30         }
     31 
     32         private int _grade;
     33         public int grade
     34         {
     35             get { return _grade; }
     36             set { _grade = value; }
     37         }
     38 
     39         public bool joinCommunity(StudentCommunity sc)
     40         {
     41             return sc.addMember(this);
     42         }
     43 
     44     }
     45 
     46     public class StudentCommunity
     47     {
     48         private const int MaxStudents = 100;
     49         private Student[] members = new Student[MaxStudents];
     50 
     51         private string _name;
     52         public string name
     53         {
     54             get { return _name; }
     55             set { _name = value; }
     56         }
     57 
     58         private int _count = 0;
     59         public int count
     60         {
     61             get { return _count; }
     62         }
     63 
     64         public bool addMember(Student s)
     65         {
     66             if (count < MaxStudents)
     67             {
     68                 members[count] = s;
     69                 _count++;
     70 
     71                 return true;
     72             }
     73             else
     74             {
     75                 return false;
     76             }
     77         }
     78 
     79         public void displayMembers()
     80         {
     81             for (int i = 0; i < count; i++)
     82             {
     83                 Student s = members[i];
     84                 Console.WriteLine("成员[{0}]	姓名:{1}	性别:{2}	年龄:{3}	年级:{4}", i + 1, s.name, s.sex, s.age, s.grade);
     85             }
     86         }
     87     }
     88 
     89         static void Main(string[] args)
     90         {
     91             StudentCommunity community = new StudentCommunity();
     92 
     93             community.name = "Basketball Community";
     94             Student student = new Student("Nick", "Male", 25, 3);
     95             student.joinCommunity(community);
     96             student = new Student("Jason", "Male", 26, 4);
     97             student.joinCommunity(community);
     98             student = new Student("Jessice", "Female", 23, 2);
     99             student.joinCommunity(community);
    100 
    101             community.displayMembers();
    102 
    103             Console.ReadLine();
    104         }

      运行结果

    成员[1] 姓名:Nick      性别:Male      年龄:25        年级:3
    成员[2] 姓名:Jason     性别:Male      年龄:26        年级:4
    成员[3] 姓名:Jessice   性别:Female    年龄:23        年级:2

      base关键字表示当前类的基类。可以用base关键字调用基类的方法、属性和成员变量。如下代码所示:

     1     public class Mammal
     2     {
     3         public Mammal()
     4         {
     5             age = 0;
     6         }
     7 
     8         public Mammal(int a)
     9         {
    10             age = a;
    11         }
    12 
    13         private int _age;
    14         public int age
    15         {
    16             get { return _age; }
    17             set { _age = value; }
    18         }
    19 
    20         public void bark()
    21         {
    22             Console.WriteLine("Mammal bark!");
    23         }
    24     }
    25     public class Dog:Mammal
    26     {
    27         public void bark()
    28         {
    29             base.bark();//调用基类方法
    30             Console.WriteLine("Dog bark!");
    31         }
    32     }
    33         static void Main(string[] args)
    34         {
    35             Dog dog = new Dog();
    36 
    37             dog.bark();
    38 
    39             Console.ReadLine();
    40         }

      运行结果

    Mammal bark!
    Dog bark!

      构造函数相互调用

      在编写类代码时会遇到一种特殊的函数调用关系,就是构造函数之间的相互调用。构造函数相互调用分为同一个类的各个不同构造函数之间的调用和派生类调用基类的构造函数,前者使用this关键字,后者使用base关键字。

    public class Dog:Mammal
        {
            public Dog(int a, string n)
                :base(a)  //调用基类构造函数
            {
                name = n;
            }
    
            public Dog() 
                :this(0, "HaHa")  //调用相同类的另外一个构造函数
            {
                ////
                
            }
    
            public void bark()
            {
                base.bark();//调用基类方法
                Console.WriteLine("Dog bark!");
            }
    
            private string _name;
            public string name
            {
                get { return _name; }
                set { _name = value; }
            }
        }
  • 相关阅读:
    java布尔运算中的短路运算
    java基本数据类型和引用数据类型
    人工智能,自然界四大奥秘之一
    关于PHP导出数据超时的优化
    IDEA 生成返回值对象快捷键(GoLand,pycharm)
    Windows系统Git安装教程(详解Git安装过程)
    电脑锁屏壁纸, 时钟屏保
    常用分布函数的方差和期望机及其性质
    Windows LTSC、LTSB、Server 安装 Windows Store 应用商店
    JavaWeb中编码问题的解决办法(在客户端和服务器之间传入或响应数据后中文乱码; cookie的乱码问题) || Cookie和Session
  • 原文地址:https://www.cnblogs.com/numbqq/p/5287965.html
Copyright © 2011-2022 走看看