C# 扩展方法[学习]

简介:

C#中可以定义 扩展方法,还可以 为集合做扩展方法

示例如下:

复制代码
扩展方法
using System;
using System.Collections.Generic;

using MySpace; // 注意:引入扩展方法的空间

namespace Con_1
{
class Program
{
static void Main( string[] args)
{
string str = " {0}先生。 ".With( " XuGang ");
Console.WriteLine( " 您好! " + str);

// 2调用集合的扩展方法
str.ShowItems< char>();
}
}
}

namespace MySpace
{
// 扩展方法必须在非泛型静态类中定义
public static class MyMethods
{
// 注意:第一个参数使用“this”获得当前对象
public static string With( this string _context, params string[] _args)
{
return string.Format(_context,_args);
}


// 2为集合做扩展方法
public static void ShowItems<T>( this IEnumerable<T> _al)
{
foreach (var item in _al)
{
Console.WriteLine(item);
}
}
}
}
复制代码

注意:

1 C# 只支持扩展方法,不支持扩展属性、扩展事件等;

2 方法名无限制,第一个参数必须带 this ;

3 扩展方法的命名空间可以使用 namespace System ,但不推荐;

4 定义扩展方法的类是静态类;

在使用this 参数扩展了方法之后,该程序集会在编译的时候会在对应静态类上加上类似以下的东西。以便于调用的时候方便找到。
复制代码
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
public sealed class ExtensionAttribute : Attribute
{
......
}
复制代码


MSIL 中,自动添加了如下的代码:
.custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 )

可以看出,在运行时是需要引用 System.Core.dll。

参考来源:

C#进阶 Methods下 Extension Methods

不能不说的C# 特性-扩展方法

C# 扩展方法奇思妙用




本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2010/12/29/1920502.html,如需转载请自行联系原作者

相关文章
|
9月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
9月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
180 1
|
9月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
9月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
3月前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
171 0
|
9月前
|
C#
C#的基本语法结构学习
【5月更文挑战第17天】C#基础语法包括变量(如`int x = 10`)、常量(`const int MAX_VALUE = 100`)、运算符(如算术和比较运算符)、控制语句(if、for、while等)和函数声明(`int Add(int x, int y) { return x + y; }`)。这些构成C#程序的基本元素。
94 0
|
4月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
|
5月前
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
161 2
|
6月前
|
开发框架 .NET API
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
139 0
|
8月前
|
前端开发 Java C#
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库