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

时间:2023-03-09 00:40:35
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("诸葛亮",);
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 方法。
 // keywords_base.cs
// Accessing base class members
using System;
public class Person
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine"; public virtual void GetInfo()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("SSN: {0}", ssn);
}
}
class Employee : Person
{
public string id = "ABC567EFG";
public override void GetInfo()
{
// Calling the base class GetInfo method:
base.GetInfo();
Console.WriteLine("Employee ID: {0}", id);
}
} class TestClass
{
static void Main()
{
Employee E = new Employee();
E.GetInfo();
}
} 

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

 // keywords_base2.cs
using System;
public class BaseClass
{
int num; public BaseClass()
{
Console.WriteLine("in BaseClass()");
} public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int i)");
} public int GetNum()
{
return num;
}
} public class DerivedClass : BaseClass
{
// This constructor will call BaseClass.BaseClass()
public DerivedClass() : base()
{
} // This constructor will call BaseClass.BaseClass(int i)
public DerivedClass(int i) : base(i)
{
} static void Main()
{
DerivedClass md = new DerivedClass();
DerivedClass md1 = new DerivedClass();
}
}

3.using