C#深入浅出 关键字(一)

1.this
this关键字用于指示当前对象“自己”,来看一个例子,了解什么时候需要用this
 class Star
    {
        String name;
        int age;
        public void SetInfo(string name,int age)
        {
            name = name;//注意此处的赋值
            age = age;//
        }
        public void Show()
        {
            Console.WriteLine(name+""+age.ToString());
        }
    }

 实例化Star,并且调用其中的方法

 class Program
    {
        static void Main(string[] args)
        {
            Star star = new Star();
            star.SetInfo("诸葛亮",50);
            star.Show();//结果输出0
            Console.ReadKey();
        }
    }

 我们看到输出的结果与我们预期的不符,于是改写上面的代码如下

 class Star
    {
        String name;
        int age;
        public void SetInfo(string name,int age)
        {
            this.name = name;//注意此处的赋值
            this.age = age;//
        }
        public void Show()
        {
            Console.WriteLine(name+""+age.ToString());
        }
    }

2.base

base 关键字用于从派生类中访问基类的成员:

 

  • 调用基类上已被其他方法重写的方法。

  • 指定创建派生类实例时应调用的基类构造函数。

 

基类访问只能在构造函数、实例方法或实例属性访问器中进行。

 

从静态方法中使用 base 关键字是错误的。

示例
 
在本例中,基类 Person 和派生类 Employee 都有一个名为 Getinfo 的方法。通过使用 base 关键字,可以从派生类中调用基类的 Getinfo 方法。
 1 // keywords_base.cs
 2 // Accessing base class members
 3 using System;
 4 public class Person
 5 {
 6     protected string ssn = "444-55-6666";
 7     protected string name = "John L. Malgraine";
 8 
 9     public virtual void GetInfo()
10     {
11         Console.WriteLine("Name: {0}", name);
12         Console.WriteLine("SSN: {0}", ssn);
13     }
14 }
15 class Employee : Person
16 {
17     public string id = "ABC567EFG";
18     public override void GetInfo()
19     {
20         // Calling the base class GetInfo method:
21         base.GetInfo();
22         Console.WriteLine("Employee ID: {0}", id);
23     }
24 }
25 
26 class TestClass
27 {
28     static void Main()
29     {
30         Employee E = new Employee();
31         E.GetInfo();
32     }
33 } 

本示例显示如何指定在创建派生类实例时调用的基类构造函数。

 1 // keywords_base2.cs
 2 using System;
 3 public class BaseClass
 4 {
 5     int num;
 6 
 7     public BaseClass()
 8     {
 9         Console.WriteLine("in BaseClass()");
10     }
11 
12     public BaseClass(int i)
13     {
14         num = i;
15         Console.WriteLine("in BaseClass(int i)");
16     }
17 
18     public int GetNum()
19     {
20         return num;
21     }
22 }
23 
24 public class DerivedClass : BaseClass
25 {
26     // This constructor will call BaseClass.BaseClass()
27     public DerivedClass() : base()
28     {
29     }
30 
31     // This constructor will call BaseClass.BaseClass(int i)
32     public DerivedClass(int i) : base(i)
33     {
34     }
35 
36     static void Main()
37     {
38         DerivedClass md = new DerivedClass();
39         DerivedClass md1 = new DerivedClass(1);
40     }
41 }

3.using

原文地址:https://www.cnblogs.com/jaysen/p/4403394.html