【唐老狮】C#——封装:拓展方法

【唐老狮】C#——封装:成员方法 上篇回顾 访问修饰符 决定成员变量的访问权限 public——公共 private——私有 成员变量 在类中声明的变量 描述特征 赋值随意 任意类型 任意数量 今天我们将来学习 对象的行为 成员方法 【成员方法】 ​​通过前几篇文章,我们已经可以用成员变量在类中形容对象的特征了,但是对于对象来说,只有特征是不够的。比如人的特征:姓名,年龄,性别,国籍等等都可以通过成员变量来表示,但是对于人的行为:走路,吃饭,睡觉等等,用成员变量是不能够表... 阅读详情

上篇回顾

静态类

用static修饰的类

只能包含静态成员

不能被实例化

作用

工具类

拓展方法

静态构造函数

静态类和普通类都可以有

用static修饰的构造函数

不能使用访问修饰符

不能有参数

自动调用

作用

初始化静态成员

        通过上两篇文章,我们已经学习了关于static的关键知识:静态成员、静态类和静态构造函数。我们今天要学习一个关于静态的高级知识点,也是之后在Unity中肯定会涉及到的知识点——拓展方法。


 

【拓展方法】
 

概念

为现有变量类型“添加”方法

作用

提升程序拓展性

不需要继承来添加方法

不需要在对象中重新写方法

为别人封装的类型写额外方法

特点

静态类中

静态函数

第一个参数类型为拓展目标

第一个参数用this修饰

【为现有类型拓展方法】

 

注意

  1. 拓展方法的第一个参数,可以理解为调用这个方法的对象自己。比如这里的 i 调用了方法,所以函数内部的 intValue 代表的就是这个 i。 

  2. 这里也体现了拓展方法的好处,我们是没有办法去修改 int 的代码的,但是我们可以通过拓展方法为它加自定义的方法。

【为自定义类型添加方法】

 

【拓展方法可以有参数】

 

 

【总结】
 

概念

为现有变量类型“添加”方法

作用

提升程序拓展性

不需要继承来添加方法

不需要在对象中重新写方法

为别人封装的类型写额外方法

特点

静态类中

静态函数

第一个参数类型为拓展目标

第一个参数用this修饰

注意

可以有参数

参数类型根据需求而定


关注唐老狮获取更多干货内容

 

【唐老狮】C#——封装:成员属性 上篇回顾 构造函数 实例化对象时调用的函数 主要用来初始化成员变量 不写返回值 函数名和类名相同 访问修饰符根据需求而定 一般为public 可以重载构造函数 可以用this语法重用代码 可以用this区分同名参数和成员变量 有参构造会顶掉默认的无参构造 如想保留无参构造需重载出来 析构函数 当类对象被垃圾回收时调用 主要用来回收资源或者特殊处理 Unity中几乎不用 不写返回值 不写修饰符 不能有参数 函数名和类名相同 前面加~ 阅读详情

相关推荐

【唐老狮】C#——继承:构造函数

上篇回顾 里氏替换概念 ​父类对象装子类对象 作用 方便进行对象存储和管理 使用 is和as is用于判断 父类是不是指定类型的子类 as用于转换 父类类型转换为子类类型对象 当然父子可以相互转换 今天的标题是继承:构造函数,很多同学肯定有疑问,我们在封装时不是已经学习了构造函数吗?继承后的构造函数有什么不同吗?那首先,我们回顾一下在封装中学习的构造函数。 构造函数 实例化对象时调用的函数 主要用来初始化成员变量 不写返回值 函数名和类名相同...

MrTang_Unity的博客 3983

C# 8.0先睹为快

在MSDN Channel 9中,Mads Torgersen先行通过视频展示了C# 8的四个特性。\\可空的引用类型(Nullable Reference Types)\\InfoQ曾对可空的引用类型做了报道,该理念可概括地表述为,引用类型将不再默认可空。因此,开发人员必须使用定义可空值类型的同样语法“Type?”,显式地标记一个引用类型为可空。\\如果将一个空值赋值给一个非可空的引用类型,那么...

cpongo5 253

【唐老狮】C#——封装:静态成员

​​关于面向对象三大特性之封装,我们已经学习了许多知识点:类和对象、成员变量和访问修饰符、成员方法(函数)、构造函数和析构函数、成员属性、索引器。当你看到这些知识点时,如果发现自己已经不清楚或者忘记了,你可以再看看前几篇文章来进行回顾。 ​​今天我们要讲的是一个非常重要的知识点,是面试中经常会问到的内容——静态成员。 【静态成员】 静态关键字 static 静态成员 用static修饰的 成员变量 成员方法 成员属性 等 特点 直接...

MrTang_Unity的博客 969

C# this

1.C#原始类型扩展方法—this参数修饰符 https://www.cnblogs.com/jhxk/articles/1796382.html 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调...

yaoyutian的博客 3268

【唐老狮】C#——封装:静态类和静态构造函数

上篇回顾 静态关键字 static 静态成员 用static修饰的 成员变量 成员方法 成员属性 等 特点 直接用类名点出使用 生命周期 同生共死 会一直存在内存中 直到程序结束后才会被释放 因此静态成员具有唯一性 注意 静态函数中不能直接使用非静态成员 非静态函数中可以直接使用静态成员 常量和静态变量 常量是特殊的静态变量 相同点 它们都可以通过 类名点出使用 不同点 const必须初始化,不能修改 static没有这个规则

MrTang_Unity的博客 917

【唐老狮】C#——封装:内部类和分部类

​​目前,我们几乎已经把面向对象封装特性的重要知识点学习完了。今天要讲的内部类和分部类,在实际开发中用的较少,只需了解即可。学习它们的目的是当你遇到了要看得懂。 ​ 【内部类】 概念 在一个类中再声明一个类 特点 使用时要用包裹者点出自己 作用 亲密关系的表现 注意 访问修饰符作用很大 ​​如上面的代码,Body类可以认为和Person类关系非常亲密,它一定是和Person类关联在一起使用的,Arm类和Body类的关系同理,所...

MrTang_Unity的博客 686

C#特性-扩展方法

在我们的编程生涯中我们要使用很多很多类库,这些类库有的是我们自己开发的,我们有她的代码,有的是第三方发布的,我们不仅没有他们的代码,连看的机会都没有。 作为.net程序员,我们每天都要和BCL(Base Class Lin...

cuibinmo3519的博客 344

【唐老狮】C#——ArrayList

【ArrayList】 本质 object数组 特点 自动调整空间大小 存在装箱拆箱 存储任意类型 ArrayList是一个C#为我们封装好的类,它的本质是一个object类型的数组,ArrayList类帮助我们实现了很多方法,比如数组的增删查改,都提供给了我们对应的方法,方便我们使用,不需要我们自己来实现相关的逻辑。 回顾数组的存储结构 数组的声明必需一开始就声明好具体占多少内存空间,当我们进行增删查改时需要考虑扩容和移位相关的复杂操作...

MrTang_Unity的博客 1348

c# 扩展方法详解

扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。 扩展方法当然不能破坏面向对象封装的概念,所以只能是访问所扩展类的public成员。 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 C#扩展方法第一个参数指定该方法作用于哪个类型,并且该参数以 this...

qq_33380252的博客 734

【唐老狮】C#——封装:构造函数和析构函数

上篇回顾 成员方法 描述行为 类中声明 任意数量 返回值和参数 根据需求决定 今天我们将来学习 两个特殊的 成员函数(方法) 构造函数 析构函数 【构造函数】 默认存在一个无参构造函数 如何自己实现一个构造函数 构造函数一般是用来初始化信息的 构造函数的访问修饰符一般public 如果是private外部就无法new对象了 构造函数可以被重载 不手动实现无参构...

MrTang_Unity的博客 902

【唐老狮】C#——继承:基本规则

​​通过之前的文章,我们已经把封装相关知识点全部学习完毕了,我们已经可以游刃有余的用面向对象的思想用程序去形容一个现实事物了。 ​​今天我们正式开始学习继承相关的知识点,它可以帮助我们节约代码量,理清对象之间的关系。 【继承】 概念 一个类A继承一个类B 类A将会继承类B的所有成员 A类将拥有B类的所有特征和行为 被继承的类 称为父类、基类、超类 继承的类 称为子类、派生类 子类 可以有自己的特征和行为 比如 ...

MrTang_Unity的博客 845

【转载】C#构造函数

C#构造函数

MiniOrange168的博客 9444

【唐老狮】C#——封装:运算符重载

​​目前我们学过的变量中,除了几种自定义的变量(结构体、类、枚举),语言本身的13种常用变量类型byte、int、float等等都默认支持用运算符进行计算,也支持条件运算符进行比较。今天我们要学习的内容就是如何让自定义的类型能够使用运算符进行运算和比较! 【运算符重载】 概念 让自定义类和结构体 能够使用运算符 关键字 operator 固定语法 public static返回值operator运算符(参数列表) 特点 一定是一个公共的静态方法 返回值...

MrTang_Unity的博客 478

【唐老狮】C#——封装:索引器

​​还记得我们学过的数组吗?数组可以通过中括号array[0]中括号包裹索引的形式得到指定位置的数组元素。 ​​我们今天要学习的索引器,它的作用就是允许类或结构体的实例按照和数组相同的方式进行索引访问。 【索引器】 索引器类似成员属性 使用get和set语句块 索引器的固定写法 访问修饰符返回值this[参数] 内部规则和属性的get和set规则一样 索引器的get和set中可以写逻辑 索引器的参数类型可以...

MrTang_Unity的博客 629

【唐老狮】C#——函数

【函数】 【函数是什么】 ​​其实我们学习到现在,我们写的大部分代码都是写在函数中的。Main就是一个静态函数。函数就是包裹了代码的特殊语句块(大括号包裹的代码称为语句块或代码块),它可以被复用,提升代码的复用率,封装代码,抽象行为。(函数也可称为方法) 【函数写在哪里】 被struct或class(面向对象时学习) 包裹 【语法】 中文描述的部分可以变化 【新关键字——void】 代表函数没有返回值 【新关键字——return...

MrTang_Unity的博客 791

【唐老狮】C#——多态和vob

​​截止目前,我们已经学会了面向对象中封装和继承两大特性的相关知识点。简单理解它们,封装就是用代码形容一个现实对象,继承就是复用代码,通过继承可以让类之间建立父子关系,复用一些特征和行为。 ​​那么,我们接下来要继续学习最重要的一个特性——多态。 【多态】 概念 同一类型对象 执行相同行为 有不同的表现 为什么要学习多态? ​​根据多态的概念,很多同学可能会写出如上的代码,子类中重新实现一个SpeakName的方法,前面加一...

MrTang_Unity的博客 994

【唐老狮】C#——封装:类和对象

通过上一篇文章,我们已经基本了解了面向对象编程的基本概念:万物皆对象,用程序代码来形容各对象,用面向对象的思想来编写程序。那么今天我们就来看看在程序中如何来形容对象。 【类和对象】 【什么是类?】 具有相同特征 具有相同行为 一类事物的抽象 类是对象的模板 可以通过类创建出对象 类的关键词 class 类一般写在namespace语句块中 以上这些我们都称为类 人类 机器类 植物类 现在这些类内部还没有用于具体形...

MrTang_Unity的博客 751

【唐老狮】C#——封装:成员变量和访问修饰符

​上篇回顾 类是对象的模板 用来抽象现实对象 对象是类的实例 用来表示现实对象个体 类是一个自定义变量 实例化类对象 是在声明变量 今天我们将来学习 对象的特征 成员变量 【成员变量】 面向对象编程思想,简单点说就是用程序语言来抽象(形容)出现实对象。现在我们已经知道类是用来形容对象的,而对象是类实例化出来的。而具体对象的特征和行为在类中表现主要是通过:成员变量和成员方法体现的。 成员变量 ↓↓↓↓ 在类里...

MrTang_Unity的博客 843
上一篇: 【唐老狮】C#——封装:静态类和静态构造函数
下一篇: 【唐老狮】C#——封装:运算符重载
一唐老狮一
博客等级 码龄5年 507粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值