博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 扩展方法[学习]
阅读量:6692 次
发布时间:2019-06-25

本文共 1246 字,大约阅读时间需要 4 分钟。

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。

参考来源:

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

你可能感兴趣的文章
解析Google最新“移动实时视频分割”技术
查看>>
“锤子科技2017春季新品发布会”能否带领罗永浩度过难关?
查看>>
Vue 脱坑记 - 查漏补缺(汇总下群里高频询问的xxx及给出不靠谱的解决方案)
查看>>
校招那些坑,是我走过最长的路
查看>>
OceanBase 2.0让百万支付不是梦?
查看>>
『Material Design入门学习笔记』TabLayout与NestedScrollView(附demo)
查看>>
Xcode9下自动化编译错误
查看>>
UCloud首尔机房整体热迁移是这样炼成的
查看>>
Dopamine - 灵活、可重复的强化学习研究新框架
查看>>
独立开发者赚钱之道 - 订阅制内购
查看>>
春夏秋冬又一春之Redis持久化
查看>>
[iOS 10 day by day] Day 6:自定义的通知界面
查看>>
Cookie 和 Session 关系和区别
查看>>
CoreFoundation CFRuntimeBase下的_cfinfo[4]存储信息探究
查看>>
学习记录——盒模型
查看>>
Swift语音和文本的转换
查看>>
Array方法汇总
查看>>
flex布局
查看>>
四大组件之Service_绑定服务
查看>>
深度 | 腾讯 AI Lab副主任俞栋:过去两年基于深度学习的声学模型进展
查看>>