Unity使用C#高级特性扩展方法
来源:互联网 发布:液晶电视清晰知乎 编辑:程序博客网 时间:2024/05/07 08:06
C#扩展方法
最近在工作中遇到一个问题,即在不修改原始类的情况下,为类添加新的方法和属性,于是在C#的高级特性中发现了解决方案:扩展方法
下面的扩展方法的定义:
扩展方法有两个限制:1 方法必须的定义在静态类中(类中所有的扩展都是静态的);2 所有扩展方法都需要使用this关键字对第一个参数(并且仅对第一个参数)进行修饰(用this限定的参数表示被扩展的项);下面的这个类中定义了两个扩展方法:
using System;using System.Reflection;/// <summary>/// C#高级特性扩展方法学习/// </summary>public static class Sample { // 本方法任何对象显示它所处的程序集// public static void DisplayDefiningAssembly(this object obj) { Debug.Log(obj.GetType().Name + "lives here: => " +Assembly.GetAssembly(obj.GetType()).GetName().Name); } // 本方法允许任何整形返回倒置的副本,例56返回65// public static int ReverseDigits(this int i) { //把int翻译成string然后获取所有的字符串 // char[] digts = i.ToString().ToCharArray(); //反转数组的项// Array.Reverse(digts); // 放回string// string newDigts = new string(digts); //使用int值返回修改后的字符串// return int.Parse(newDigts); }}
每个扩展方法的第一个参数类型前都使用了关键字this,大多数情况下扩展方法的第一个参数表示被扩展的类型
DisplayDefiningAssembly()被定义为用于扩展System.Object,所以这个程序集中所有的对象都是使用这个扩展方法,Reverse()方法只被定义用作整数类型,
下面的具体的调用:
public class ExtensionMethod : MonoBehaviour { void Start() { int myInt = 1234567; myInt.DisplayDefiningAssembly(); string myString = "I'm a string"; myString.DisplayDefiningAssembly(); //使用int的新功能// Debug.Log("Value of myInt:" + myInt.ToString()); Debug.Log("Reverse digts of myInt: " + myInt.ReverseDigits()); }}
0 0
- Unity使用C#高级特性扩展方法
- Unity中C#高级特性匿名类型使用
- C#特性-扩展方法
- C#学习笔记(三)—–C#高级特性:扩展方法
- 关于unity使用dll和c#扩展方法的小结
- c# 3.0新特性之使用扩展方法
- 一个例子帮你搞懂C#语言高级特性系列(03) --- 方法扩展
- unity/C#中扩展方法类
- C#3.0新特性:扩展方法初探
- C# 3.0新特性之扩展方法
- 不能不说的C#特性-扩展方法
- C#3.0特性之---扩展方法
- 不能不说的C#特性-扩展方法
- C# 3.0新特性之扩展方法
- C# 3.0新特性之扩展方法
- C# 3.0新特性初步研究 Part2:使用扩展方法_C#教程
- C# 3.0新特性初步研究 Part2:使用扩展方法_C#教程
- C# 3.0新特性初步研究 Part2:使用扩展方法_C#教程
- VS2012下如何打包Winform程序
- awesome icons
- 我与ARM的那些事儿2JINLK烧录nor flash
- sysproccesses 的应用
- Button只弹出一个PopUp窗体
- Unity使用C#高级特性扩展方法
- [LeetCode] Combination Sum II
- listener监听器的工作原理是什么
- 第九周 项目三:输出星号图
- sscanf,sscanf_s及其相关用法
- spring注入
- 第三章:注解式控制器开发详解 ——深入浅出学Spring Web MVC
- 黑马程序员--JDBC
- 创建子进程函数