个人理解扩展方法是对某些类在不改变源码的基础上添加其他的方法。扩展方法必须是在非泛型的静态类里定义,且第一个参数是要使用this 指定需要扩展的类型。

class Program
{
static void Main(string[] args)
{
ExtensionDemo test = new ExtensionCreate().TestRun("Jennifer") //声明扩展方法
Console.WriteLine(test.FirstName + " " + test.LastName);
Console.ReadKey();
}
}
public class ExtensionCreate
{
public ExtensionDemo TestRun(string FirstName)
{
return new ExtensionDemo() { FirstName = FirstName };//声明并返回一个带有FirstName属性的对象
}
}
public class ExtensionDemo //只有两个属性的类型
{
public string LastName { get; set; }
public string FirstName { get; set; } }

现在我们可以创建一个扩展方法,并且打印出来。或者创建另一个扩展方法为属性赋值

public static class ExtensionType
{
public static void ExtensionWrite(this ExtensionDemo demo)
{
Console.WriteLine(demo.FirstName + " " + demo.LastName);//输出全名名字
} public static void AssignmentLastName(this ExtensionDemo demo, string LastName)
{
demo.LastName = LastName;//对LastName属性进行赋值 }
} test.ExtensionWrite();
test.AssignmentLastName("Aniston");
test.ExtensionWrite();

扩展方法可以使用类里的公共属性,私有属性不可调用。

public static class ExtensionType
{
public static void ExtensionWrite(this ExtensionDemo demo)
{
Console.WriteLine(demo.FirstName + " " + demo.LastName);//输出名字
} public static ExtensionDemo ExtensionTest(this ExtensionDemo demo, string LastName)
{
demo.LastName = LastName;//对LastName属性进行赋值
return demo;
}
} public class ExtensionCreate
{
//接受一个string类型参数,返回一个ExtensionDemo类型
public ExtensionDemo TestRun(string FirstName)
{
return new ExtensionDemo() { FirstName = FirstName };
}
} ExtensionDemo test = new ExtensionCreate().TestRun("Jennifer")
.ExtensionTest("Aniston"); // 这是扩展方法 test.ExtensionWrite()//打印名字

c# 扩展方法初见理解的更多相关文章

  1. 关于.NET中迭代器的实现以及集合扩展方法的理解

    在C#中所有的数据结构类型都实现IEnumerable或IEnumerable<T>接口(实现迭代器模式),可以实现对集合遍历(集合元素顺序访问).换句话可以这么说,只要实现上面这两个接口 ...

  2. c#扩展方法的理解(二:接口)

    namespace ExtensionInterfaceMethod { class Program { static void Main(string[] args) { //使用接口变量来调用扩展 ...

  3. c#扩展方法的理解(一:初识)

    扩展方法是静态方法,是类的一部分,但是实际上没有放在类的源代码中. 扩展方法所在的类也必须被声明为static C#只支持扩展方法,不支持扩展属性.扩展事件等. 扩展方法的第一个参数是要扩展的类型,放 ...

  4. C#扩展方法的理解

    “扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.” 这是msdn上说的,也就是你可以对String,Int,DataRow,DataTable等这些 ...

  5. C#扩展方法的理解 (转)

    “扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.” 这是msdn上说的,也就是你可以对String,Int,DataRow,DataTable等这些 ...

  6. C# 五、谈扩展方法的理解

    http://www.cnblogs.com/zhaopei/p/5678842.html

  7. C#中的反射和扩展方法的运用

    前段时间做了一个练手的小项目,采用的是三层架构,也就是Models,IDAL,DAL,BLL 和 Web , 在DAL层中各个类中有一个方法比较常用,那就是 RowToClass ,顾名思义,也就是将 ...

  8. C#扩展方法学习

    扩展方法的本质是什么,详细见此文 C#扩展方法,爱你在心口难开 重点如下:扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法 ...

  9. 扩展方法(深入理解c#)

    1. 静态类到扩展方法: 许多方法可能都适合转为扩展方法,只要具有以下特征: 1)你想为一个类型添加一些成员: 2)你不需要为类型的实例添加更多的数据: 3)你不能改变类型本身,因为是别人的代码 2. ...

随机推荐

  1. Go语言基础之反射

    Go语言基础之反射 本文介绍了Go语言反射的意义和基本使用. 变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息. 值信息:程序运行过程中可动态变化的. 反射介绍 反射是指 ...

  2. 批量引用iconfont字体图标到项目

    打开https://www.iconfont.cn/网址登录后选择你需要的图标添加到购物车中 点击下载代码或者添加到项目后再下载代码,再找到之前下载的的文件,拷贝到项目中

  3. 文件访问时间简记(Modify time 和 Change time)

    [root@77-29-68-bx-core]# stat hql.out File: 'hql.out' Size: 13750 Blocks: 32 IO Block: 4096 regular ...

  4. MySQL 5.7 安装指南

    1.下载1)进⼊入官⽹网下载5.7.23压缩包 下载地址:https://dev.mysql.com/downloads/mysql /5.7.html#downloads 2.安装与配置 1)将下载 ...

  5. UEditor之实现配置简单的图片上传示例

    UEditor之实现配置简单的图片上传示例 原创 2016年06月11日 18:27:31 开心一笑 下班后,阿华到楼下小超市买毛巾,刚买完出来,就遇到同一办公楼里另一家公司的阿菲,之前与她远远的有过 ...

  6. NFS部署文件共享

    本章解了如何配置网络文件系统(Network File System,NFS)服务来简化Linux系统之间的文件共享工作,以及通过部署NFS服务在多台Linux系统之间挂载并使用资源.在管理设备挂载信 ...

  7. Win10 安装 VMWare中 MAC OS X的安装,VMWare tools的配置与iOS的Helloworld

    iOS的开发必须在MAC OS X系统下进行,这很蛋疼,现在MACBOOK动不动就上千上万大洋,这足够买台配置怪兽了,好吗?然而,我们是可以通过在VMWare中安装MAC OS X进行iOS开发的.对 ...

  8. MQTT在react-native中的运行

    mqtt 1.什么是mqtt? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式 ...

  9. 发布core到linux

    1.安装虚拟机之后,发现可以ping通但是telnet提示失败 CentOS 7.0默认使用的是firewall作为防火墙(我们需要把防火墙关掉) 查看防火墙状态 firewall-cmd --sta ...

  10. 解决同一页面中两个iframe互相调用jquery,js函数

    这一个月又没更新博客,唉,懒癌又犯了,今天解决了一个问题,关于两个iframe互相调用jquery函数方法 a.html中有两个iframe,如下: <iframe width="10 ...