C#基础知识(base、this、new、override、abstract、virtual、static)
本文主要来讲解一下C#中,自己觉得掌握的不怎么样或者用的不多,不太熟悉的关键字,主要包括base、this、new、override、abstract、virtual以及针对static字段和static构造函数之间的执行问题。
base关键字
base 关键字用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数、实例方法和实例属性访问器中:
调用基类上已被其他方法重写的方法。
public class Father { public virtual void Say() { Console.WriteLine("Father Say"); } } public class Son : Father { public override void Say() { base.Say(); Console.WriteLine("Son Say"); } }
指定创建派生类实例时应调用的基类构造函数。
public class Father { public string Name { get; set; } public Father() { Name = "Father"; } } public class Son : Father { public Son() : base() { } }
从静态方法中使用 base 关键字是错误的。
this关键字
其用于引用类的当前实例,也包括继承而来的方法,通常可以隐藏this:
限定被相似的名称隐藏的成员
public class Person { public string Name { get; set; } public int Age { get; set; } public Person(string Name, int Age) { this.Name = Name; this.Age = Age; } }
将对象作为参数传递到其他方法
public class Person { public string Name { get; set; } public int Age { get; set; } public Person(string Name, int Age) { this.Name = Name; this.Age = Age; } public void CallTest(Person person) { Console.WriteLine(person.Name+person.Age); } public void Call() { CallTest(this); } }
声明索引器
public class Person { string[] PersonList = new string[10]; public string this[int param] { get { return PersonList[param]; } set { PersonList[param] = value; } }
new关键字
一、new运算符
1、new一个class时,new完成了以下两个方面的内容:一是调用new class命令来为实例在托管堆中分配内存;二是调用构造函数来实现对象初始化。
2、new一个struct时,new运算符用于调用其带构造函数,完成实例的初始化。
3、new一个int时,new运算符用于初始化其值为0。
4、 new运算符不可重载。
5、new分配内存失败,将引发OutOfMemoryException异常。
二、new修饰符
new 关键字可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。 虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。 如果使
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71313.html
- 上一篇:使用EventLog类写Windows事件日志
- 下一篇:一、模板方式写入