网站不显示域名解析错误怎么办,京东建站模板,网站开发平面设计师岗位要求,wordpress4.0安装教程拓展方法 定义一个扩展方法使用扩展方法例如再举个例子终极例子 注意事项与Linq 在C#中#xff0c;扩展方法是一种特殊的静态方法#xff0c;允许开发者向现有类型“添加”新的方法#xff0c;而无需修改该类型的源代码或创建新的派生类型。这种机制提供了一种更为灵活的方式… 拓展方法 定义一个扩展方法使用扩展方法例如再举个例子终极例子 注意事项与Linq 在C#中扩展方法是一种特殊的静态方法允许开发者向现有类型“添加”新的方法而无需修改该类型的源代码或创建新的派生类型。这种机制提供了一种更为灵活的方式来扩展已有的类或结构的功能。
C# 中的扩展方法是一种特殊的静态方法它允许你为现有类型添加新的方法而不需要修改原始类型。扩展方法通常用于为那些你无法修改的类型添加功能比如 .NET Framework 中的类型。 扩展方法的定义必须在一个静态类中并且方法的第一个参数必须使用 this 关键字这个 参数指定了扩展方法所作用的类型。 定义一个扩展方法
要定义一个扩展方法需要遵循以下规则
扩展方法必须在静态类中定义。 扩展方法的第一个参数要使用 this 关键字并且这个参数指定了方法将扩展哪个类型。 第一个参数之后的参数是扩展方法所需要的其他参数。 下面是一个简单的扩展方法的例子这个方法为 int 类型添加了一个名为 Square 的方法用于计算整数的平方
public static class IntegerExtensions
{// 这是一个扩展方法它扩展了 int 类型public static int Square(this int num){return num * num;}
}使用扩展方法
一旦定义了扩展方法就可以像使用实例方法一样来使用它。
例如
using System;namespace ExtensionMethods
{class Program{static void Main(string[] args){int number 5;int square number.Square(); // 调用扩展方法Console.WriteLine($The square of {number} is {square});}}public static class IntegerExtensions{public static int Square(this int num){return num * num;}}
}在这个例子中我们不需要修改 int 类型的定义就可以直接调用 Square 方法。 再举个例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace forCode {class Program {static void Main(string[] args) {double a 2;int b a.Square();Console.WriteLine($b {b});Console.ReadKey();}}public static class aa {public static int Square(this double num) {return Convert.ToInt32(Math.Pow(num, 2.0));}}}
上述例子是double的拓展一个double变量平方后转为int 终极例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace forCode {class Program {static void Main(string[] args) {MyNumber m new MyNumber();m.a 1;m.AddSome(3);Console.WriteLine($m.a {m.a});Console.ReadKey();}}public class MyNumber {public int a;} public static class MyExTention {public static int Square(this double num) {return Convert.ToInt32(Math.Pow(num, 2.0));}public static void AddSome(this MyNumber myNumber, int num) {myNumber.a num;}}}
为自定义的类添加扩展方法
注意事项
扩展方法不能访问它们所扩展的类型中的私有成员。 如果扩展方法与现有方法冲突那么扩展方法将不会被调用。 扩展方法是一种语法糖编译器会将它们转换为静态方法的调用。 通过使用扩展方法开发者可以更加方便地对现有类型进行功能增强同时保持代码的整洁和可维护性。
与Linq
Where就是一种扩展方法