这篇文章主要讲解了“C#基础知识总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#基础知识总结”吧!
C#基础知识之new 修饰符是起什么作用?
new 修饰符与 new 操作符是两个概念,new 修饰符用于声明类或类的成员,表示隐藏了基类中同名的成员。而new 操作符用于实例化一个类型,new 修饰符只能用于继承类,一般用于弥补基类设计的不足,new 修饰符和 override 修饰符不可同时用在一个成员上,因为这两个修饰符在含义上互相排斥
示例:
using System; using System.Collections.Generic; using System.Text; namespace Example09 { class BaseClass { //基类设计者声明了一个PI的公共变量,方便进行运算public static double PI = 3.1415; } class DervieClass : BaseClass { //继承类发现该变量的值不能满足运算精度,于是可以通过new修饰符显示隐藏基类中的声明 public new static double PI = 3.1415926; } class Program { static void Main(string[] args){ Console.WriteLine(BaseClass.PI); Console.WriteLine(DervieClass.PI); Console.ReadLine(); }
C#基础知识之this 关键字的含义?
this 是一个保留字,仅限于构造函数和方法成员中使用,在类的构造函数中出现表示对正在构造的对象本身的引用,在类的方法中出现表示对调用该方法的对象的引用,在结构的构造上函数中出现表示对正在构造的结构的引用,在结构的方法中出现表示对调用该方法的结果的引用,this 保留字不能用于静态成员的实现里,因为这时对象或结构并未实例化,在 C# 系统中,this 实际上是一个常量,所以不能使用 this++ 这样的运算,this 保留字一般用于限定同名的隐藏成员、将对象本身做为参数、声明索引访问器、判断传入参数的对象是否为本身
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example10 {
class Class1 {
private double c;
private string value;
public double C {
get {
return c;
}
public Class1(double c){
//限定同名的隐藏成员this.c = c;
}
public Class1(Class1 value){
//用对象本身实例化自己没有意义
if (this != value){
c = value.C;
}
public override string ToString(){
//将对象本身做为参数return string.Format
("{0} Celsius = {1} Fahrenheit", c, UnitTransClass.C2F(this));}
//由于好奇,在这做了一个效率测试,想看看到底哪种方式访问成员变量更快,结论:区别不大……
public string Test1(){
long vTickCount = Environment.TickCount;for (int i = 0; i < 10000000; i++)
this.value = i.ToString();
return string.Format
("Have this.: {0} MSEL", Environment.TickCount - vTickCount);}
public string Test2(){
long vTickCount = Environment.TickCount;
for (int i = 0; i < 10000000; i++)
value = i.ToString();
return string.Format("Don't have this.: {0} MSEL",
Environment.TickCount - vTickCount);}
class UnitTransClass {
public static double C2F(Class1 value){
//摄氏到华氏的转换公式return 1.8 * value.C + 32;
}
class Program {
static void Main(string[] args){
Class1 tmpObj = new Class1(37.5);
Console.WriteLine(tmpObj);
Console.WriteLine(tmpObj.Test1());
Console.WriteLine(tmpObj.Test2());
Console.ReadLine();
}
C#基础知识之可以使用抽象函数重写基类中的虚函数吗?
可以,但需使用 new 修饰符显式声明,表示隐藏了基类中该函数的实现
示例:
class BaseClass { public virtual void F(){ Console.WriteLine("BaseClass.F"); } abstract class DeriveClass : BaseClass { public new abstract void F(); }
感谢各位的阅读,以上就是“C#基础知识总结”的内容了,经过本文的学习后,相信大家对C#基础知识总结这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。