必须知道的C#的25个基础概念(附演示)(2)

2020-04-16 13:17

}

public virtual void G() {

Console.WriteLine("A.G"); } }

class B : A {

public sealed override void F() {

Console.WriteLine("B.F"); }

public override void G() {

Console.WriteLine("B.G"); } }

class C : B {

public override void G() {

Console.WriteLine("C.G"); } }

static void Main(string[] args) {

new A().F(); new A().G(); new B().F(); new B().G(); new C().F(); new C().G(); Console.ReadLine(); } } } 结果:

类 B 在继承类 A 时可以重写两个虚函数,如图所示:

由于类 B 中对 F 方法进行了密封, 类 C 在继承类 B 时只能重写一个函数,如图所示:

控制台输出结果,类 C 的方法 F 只能是输出 类B 中对该方法的实现:

A.F A.G B.F B.G B.F C.G

7.override 和 overload 的区别? 答:

override 表示重写,用于继承类对基类中虚成员的实现

overload 表示重载,用于同一个类中同名方法不同参数(包括类型不同或个数不同)的实现 示例:

using System;

using System.Collections.Generic; using System.Text; namespace Example07 {

class Program {

class BaseClass {

public virtual void F() {

Console.WriteLine("BaseClass.F"); } }

class DeriveClass : BaseClass {

public override void F() {

base.F();

Console.WriteLine("DeriveClass.F"); }

public void Add(int Left, int Right) {

Console.WriteLine("Add for Int: {0}", Left + Right); }

public void Add(double Left, double Right) {

Console.WriteLine("Add for int: {0}", Left + Right); } }

static void Main(string[] args)

{

DeriveClass tmpObj = new DeriveClass(); tmpObj.F(); tmpObj.Add(1, 2); tmpObj.Add(1.1, 2.2); Console.ReadLine(); } } } 结果: BaseClass.F DeriveClass.F Add for Int: 3 Add for int: 3.3

8.什么是索引指示器? 答:

实现索引指示器(indexer)的类可以象数组那样使用其实例后的对象,但与数组不同的是索引指示器的参数类型不仅限于int

简单来说,其本质就是一个含参数属性 示例:

using System;

using System.Collections.Generic; using System.Text; namespace Example08 {

public class Point {

private double x, y;

public Point(double X, double Y) {

x = X; y = Y; }

//重写ToString方法方便输出 public override string ToString() {

return String.Format("X: {0} , Y: {1}", x, y); } }

public class Points {

Point[] points;

public Points(Point[] Points) {

points = Points; }

public int PointNumber { get {

return points.Length; } }

//实现索引访问器

public Point this[int Index] { get {

return points[Index]; } } }

//感谢watson hua(http://huazhihao.cnblogs.com/)的指点 //索引指示器的实质是含参属性,参数并不只限于int class WeatherOfWeek {

public string this[int Index] { get {

//注意case段使用return直接返回所以不需要break switch (Index) {

case 0: {

return "Today is cloudy!"; } case 5: {

return "Today is thundershower!"; } default:

{

return "Today is fine!"; } } } }

public string this[string Day] { get {

string TodayWeather = null; //switch的标准写法 switch (Day) {

case "Sunday": {

TodayWeather = "Today is cloudy!"; break; }

case "Friday": {

TodayWeather = "Today is thundershower!"; break; } default: {

TodayWeather = "Today is fine!"; break; } }

return TodayWeather; } } }

class Program {

static void Main(string[] args) {

Point[] tmpPoints = new Point[10]; for (int i = 0; i < tmpPoints.Length; i++) {

tmpPoints[i] = new Point(i, Math.Sin(i)); }

Points tmpObj = new Points(tmpPoints);


必须知道的C#的25个基础概念(附演示)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:巨磁阻效应实验

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: