C#编程关键字之base和this讲解
小标 2018-08-13 来源 : 阅读 1435 评论 0

摘要:本文主要向大家介绍了C#编程关键字之base和this讲解,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

本文主要向大家介绍了C#编程关键字之base和this讲解,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

base this

base

官方描述:关键字用于从派生类中访问基类的成员:

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

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

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

this

官方描述:指代类的当前实例,还可用作扩展方法的第一个参数的修饰符。

项目:LearnBaseAndThis

环境VS2017 .NET Core2.0

继承调用方式

     class Father

    {

        public Father()

        {

            Console.WriteLine($"{nameof(Father)}.构造函数");

        }

 

        public Father(string name)

        {

            Console.WriteLine($"{nameof(Father)}.构造函数,Name={name}");

        }

 

        public virtual void DoSomething()

        {

            Console.WriteLine($"{nameof(Father)}.Work");

        }

    }

 

    class Son : Father //继承Father

    {

        public Son() : this("萝卜")

        {

            Console.WriteLine($"{nameof(Son)}.构造函数");

        }

 

        public Son(string name)

        {

            Console.WriteLine($"{nameof(Son)}.构造函数,Name={name}");

        }

 

        public override void DoSomething()

        {

            Console.WriteLine($"{nameof(Son)}.Learn");

        }

    }

 

    class Daughter : Father  //继承Father

    {

        public Daughter() : base("大萝卜")

        {

            Console.WriteLine($"{nameof(Son)}.构造函数");

        }

 

        public override void DoSomething()

        {

            Console.WriteLine($"{nameof(Daughter)}.Play");

        }

    }

 

//输出内容

static void Main(string[] args)

        {

            Father f = new Father();

            f.DoSomething();

 

            Console.WriteLine("------------------------");

 

            Son s = new Son();

            s.DoSomething();

 

            Console.WriteLine("------------------------");

 

            Daughter d = new Daughter();

            d.DoSomething();

 

            Console.ReadKey();

        }

 

输出如下内容:

 

Father.构造函数

Father.Work

------------------------

Father.构造函数

Son.构造函数,Name=萝卜

Son.构造函数

Son.Learn

------------------------

Father.构造函数,Name=大萝卜

Son.构造函数

Daughter.Play

   

Son类表述的是this用法,构造时默认先调用基类的默认构造方法,然后在看是否自己有指定的this构造方法

Daughter类表述的是base用法,构造时先看是否指定调用基类的某个构造方法,如无则调用默认构造

this 扩展方法  

public static class Extension

 {

     public static double ToDollar(this double i)

     {

         return ToDollar(i, 6);

     }

 

     public static double ToDollar(this double i, int j)

     {

         return i *= j;

     }

 }

 

 static void Main(string[] args)

 {

     double j = 2;

     Console.WriteLine(j.ToDollar(7).ToString());  //输出 14

     Console.WriteLine(j.ToDollar().ToString());   //输出 12

 

     Console.ReadKey();

}

   

本示例把double类进行扩展ToDollar(转换为美元)方法,根据扩展需要制定参数。

扩展方法官方解释:扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别。

LINQ查询都是扩展方法,引用System.Linq 后你会发现 集合的查询多出很多 where、count等查询方法。

注意点

不可在静态方法中使用base和this。 this也经常用在当前类中用this.属性或this.方法表明要调用当前的属性和方法。 扩展方法最好集中放在一起方便管理维护。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程