• 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

  • 相关阅读:
    Runtime类
    递归(99乘法表)
    计算某天是在一年中的第几天
    数组逆序输出
    打印数组格式
    选择排序(直接把最小或最大的数选出来排列)
    冒泡排序
    比较两个字符数组是否相等
    汉字转阿斯克马值
    R语言调用C函数
  • 原文地址:https://www.cnblogs.com/jaysen/p/4403394.html
Copyright © 2020-2023  润新知