1.this
this关键字用于指示当前对象“自己”,来看一个例子,了解什么时候需要用this
  1. class Star
  2. {
  3. String name;
  4. int age;
  5. public void SetInfo(string name,int age)
  6. {
  7. name = name;//注意此处的赋值
  8. age = age;//
  9. }
  10. public void Show()
  11. {
  12. Console.WriteLine(name+""+age.ToString());
  13. }
  14. }

实例化Star,并且调用其中的方法

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. Star star = new Star();
  6. star.SetInfo("诸葛亮",);
  7. star.Show();//结果输出0
  8. Console.ReadKey();
  9. }
  10. }

我们看到输出的结果与我们预期的不符,于是改写上面的代码如下

  1. class Star
  2. {
  3. String name;
  4. int age;
  5. public void SetInfo(string name,int age)
  6. {
  7. this.name = name;//注意此处的赋值
  8. this.age = age;//
  9. }
  10. public void Show()
  11. {
  12. Console.WriteLine(name+""+age.ToString());
  13. }
  14. }

2.base

base 关键字用于从派生类中访问基类的成员:

  • 调用基类上已被其他方法重写的方法。

  • 指定创建派生类实例时应调用的基类构造函数。

基类访问只能在构造函数、实例方法或实例属性访问器中进行。

从静态方法中使用 base 关键字是错误的。

示例

 
在本例中,基类 Person 和派生类 Employee 都有一个名为 Getinfo 的方法。通过使用 base 关键字,可以从派生类中调用基类的 Getinfo 方法。
  1. // keywords_base.cs
  2. // Accessing base class members
  3. using System;
  4. public class Person
  5. {
  6. protected string ssn = "444-55-6666";
  7. protected string name = "John L. Malgraine";
  8.  
  9. public virtual void GetInfo()
  10. {
  11. Console.WriteLine("Name: {0}", name);
  12. Console.WriteLine("SSN: {0}", ssn);
  13. }
  14. }
  15. class Employee : Person
  16. {
  17. public string id = "ABC567EFG";
  18. public override void GetInfo()
  19. {
  20. // Calling the base class GetInfo method:
  21. base.GetInfo();
  22. Console.WriteLine("Employee ID: {0}", id);
  23. }
  24. }
  25.  
  26. class TestClass
  27. {
  28. static void Main()
  29. {
  30. Employee E = new Employee();
  31. E.GetInfo();
  32. }
  33. } 

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

  1. // keywords_base2.cs
  2. using System;
  3. public class BaseClass
  4. {
  5. int num;
  6.  
  7. public BaseClass()
  8. {
  9. Console.WriteLine("in BaseClass()");
  10. }
  11.  
  12. public BaseClass(int i)
  13. {
  14. num = i;
  15. Console.WriteLine("in BaseClass(int i)");
  16. }
  17.  
  18. public int GetNum()
  19. {
  20. return num;
  21. }
  22. }
  23.  
  24. public class DerivedClass : BaseClass
  25. {
  26. // This constructor will call BaseClass.BaseClass()
  27. public DerivedClass() : base()
  28. {
  29. }
  30.  
  31. // This constructor will call BaseClass.BaseClass(int i)
  32. public DerivedClass(int i) : base(i)
  33. {
  34. }
  35.  
  36. static void Main()
  37. {
  38. DerivedClass md = new DerivedClass();
  39. DerivedClass md1 = new DerivedClass();
  40. }
  41. }

3.using

C#深入浅出 关键字(一)的更多相关文章

  1. 读书笔记之第五回深入浅出关键字---把new说透

    第五回深入浅出关键字---把new说透  ------你必须知道的.net读书笔记 new一个class时,new完成了以下两个方面的内容:一是调用newobj命令来为实例在托管堆中分配内存:二是调用 ...

  2. 你必须知道的.net读书笔记之第二回深入浅出关键字---对抽象编程:接口和抽象类

    请记住,面向对象思想的一个最重要的原则就是:面向接口编程. 借助接口和抽象类,23个设计模式中的很多思想被巧妙的实现了,我认为其精髓简单说来就是:面向抽象编程. 抽象类应主要用于关系密切的对象,而接口 ...

  3. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  4. 读<你必须知道的.NET>IL指令笔记

    IL指令笔记: 1.newObj和initObj MSDN解释:newObj用于分配和初始化对象,而initObj用户初始化值类型 newObj解释: (1):从托管堆分配指定类型所需要的全部内存空间 ...

  5. [你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理

    原文地址:http://kb.cnblogs.com/page/42318/ 系列文章导航: [你必须知道的.NET] 开篇有益 [你必须知道的.NET] 第一回:恩怨情仇:is和as [你必须知道的 ...

  6. 认识IL代码---从开始到现在 <第二篇>

    ·IL代码分析方法 ·IL命令解析 ·.NET学习方法论 1.引言 自从『你必须知道.NET』系列开篇以来,受到大家很多的关注和支持,给予了anytao巨大的鼓励和动力.俱往昔,我发现很多的园友都把目 ...

  7. 从Hello, world开始认识IL <第一篇>

    IL代码分析方法 Hello, world历史 .NET学习方法论 1.引言 1988年Brian W.Kernighan和Dennis M.Ritchie合著了软件史上的经典巨著<The C ...

  8. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  9. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

随机推荐

  1. array数组加过滤

    var array = new Array(); array.push(0); array.push(1); array.push(2); var arr = array.filter(functio ...

  2. RabbitMQctl命令

    RabbitMQControl RabbitMQ提供了可视化的网页供我们进行一些配置与操作,但是ctl的命令比UI来的专业的多,一些UI无法完成的操作就需要使用ctl命令来进行处理了 这里是官方的文档 ...

  3. 一次奇怪的T-shirt展示

    因为这次的第一也是上次的第一然后顺延下来又正好跟女神并列第二,拿到了一件T-shirt.总之,还是应该继续加油.

  4. Beta版本——第三次冲刺博客

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...

  5. 捉襟见肘之 CoreImage初级自制相机图片效果

    CoreImage.framework /* CoreImage - CoreImage.h Copyright (c) 2014 Apple, Inc. All rights reserved. * ...

  6. photoshop切图介绍

    第一部分:界面设置 1.点击“文件-新建”(或者ctrl+n)打开一个新建对话框.名称可随意填写.“预设”设置为自定,“宽度”一般选择1920,“单位”选为像素.“高度”可选择为2000,“单位”选为 ...

  7. cobbler安装、部署、测试

    cobbler功能介绍 官网:http://cobbler.github.io 安装 yum install -y httpd tftp dhcp cobbler cobbler-web pykick ...

  8. uC/OS-II内核的服务文件

    /*************************************************************************************************** ...

  9. 数据库SQL优化大总结

    1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  10. 记一次mysql故障恢复

    事情要从俩月前的一个坑说起,一台新的测试服务器,新项目一元夺宝用的. 配置aws上的一台云主机,系统盘8G,一块300G的云硬盘. 拿到机器后,另一运维小哥安装php,nginx,mysql等软件. ...