手机网站空间,网页设计实验报告单模板,最后两年会出妖,专业做h5网站Base关键字用途用于从派生类中访问基类的成员#xff0c;调用基类上已被其他方法重写的方法。指定创建派生类实时应调用的基类构造函数。基类访问只能在构造函数#xff0c;实例方法或实例属性访问器中进行。从静态方法中使用 base 关键字是错误的。Base 主要用于面向对象开发… Base关键字用途用于从派生类中访问基类的成员调用基类上已被其他方法重写的方法。指定创建派生类实时应调用的基类构造函数。基类访问只能在构造函数实例方法或实例属性访问器中进行。从静态方法中使用 base 关键字是错误的。Base 主要用于面向对象开发的对态这方面。using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{class Program
{//base的用法//1. 访问基类成员访问基类方法public class BaseClass
{protected string _calssName BaseClass;public virtual void PrintName()
{Console.WriteLine(The BaseClass Name is : {0}, _calssName);
}
}class DerivedClass : BaseClass
{public string _className DerivedClass;public override void PrintName()
{//Console.WriteLine(The BaseClass Name is {0});//调用基类方法base.PrintName();Console.WriteLine(This DerivedClass is {0},_className);
}
}//2. 在派生类中调用基类构造函数public class BaseClass2
{int num;public BaseClass2()
{Console.WriteLine(in BaseClass2());
}public BaseClass2(int i)
{num i;Console.WriteLine(in BaseClass2({0}),num);
}
}public class DerivedClass2 : BaseClass2
{// 该构造器调用 BaseClass2.BaseClass2() public DerivedClass2(): base()
{ }// 该构造器调用 BaseClass2.BaseClass2(int i) public DerivedClass2(int i): base(i)
{ }
}static void Main(string [] args)
{//访问基类成员访问基类方法 DerivedClass dc new DerivedClass();dc.PrintName();//在派生类中调用基类构造函数DerivedClass2 dc2 new DerivedClass2();DerivedClass2 dc2_b new DerivedClass2(2);Console.ReadLine();
}
}
}控制台输出: The BaseClass Name is BaseClass This DerivedClass is DerivedClass in BaseClass2() in BaseClass2(1)this的常用用途限定被相似的名称隐藏的成员将对象作为参数传递到其他方法声明索引器, 索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性不同之处在于它们的访问器采用参数。由于静态成员函数存在于类一级并且不是对象的一部分因此没有 this 指针。在静态方法中引用 this 是错误的。this 关键字引用类的当前实例。using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{class Program
{//this的用法//static void Main(string [] args)//{// Console.ReadLine();//}
}class Employee
{private string _name;private int _age;private string[] _arr new string[5];public Employee(string name, int age)
{// 使用this限定字段name与age this._name name;this._age age;
}public string Name
{get
{return this._name;
}
}public int Age
{get
{return this._age;
}
}// 打印雇员资料 public void PrintEmployee()
{// 将Employee对象作为参数传递到DoPrint方法 Print.DoPrint(this);}// 声明索引器 public string this[int param]
{get { return _arr[param];}set { _arr[param] value; }
}
}class Print
{public static void DoPrint(Employee e)
{Console.WriteLine(Name : {0}\nAge : {1}, e.Name, e.Age);
}
}class TestApp
{static void Main(string [] args)
{Employee E new Employee (Hunts,21);E[0]Scott;E[1]Leigh;E[4]Kiwis;
E.PrintEmployee();for(int i0;i5;i)
{Console.WriteLine(Friends Name: {0},E[i]);
}Console.ReadLine();
}
}
}控制台输出 Name: Hunts Age: 21 Friends Name: Scott Friends Name: Leigh Friends Name: Friends Name: Friends Name: Kiwis通用规则1、尽量少用或者不用base和this。除了避开子类的名称冲突和在一个构造函数中调用其他的构造函数之外base和this的使用容易引起不必要的结果。 2、在静态成员中使用base和this都是不允许的。原因是base和this访问的都是类的实例也就是对象而静态成员只能由类来访问不能由对象来访问。 3、base是为了实现多态而设计的。 4、使用this或base关键字只能指定一个构造函数也就是说不可同时将this和base作用在一个构造函数上。 5、简单的来说base用于在派生类中访问重写的基类成员而this用于访问本类的成员当然也包括继承而来公有和保护成员。 6、除了base访问基类成员的另外一种方式是显示的类型转换来实现。只是该方法不能为静态方法。参考http://dev.yesky.com/380/7670880_2.shtmlhttp://www.cnblogs.com/netlyf/archive/2009/09/13/1565709.html 转载于:https://blog.51cto.com/57388/1651664