博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
扩展方法
阅读量:6871 次
发布时间:2019-06-26

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

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。

1.可以使用扩展方法来扩展类或接口,但不能重写扩展方法。

  2.与接口或类方法具有相同名称和签名的扩展方法永远不会被调用。

  3.编译时,扩展方法的优先级总是比类型本身中定义的实例方法低。

    换句话说,如果某个类型具有一个名为Process(int i) 的方法,而您有一个具有相同签名的扩展方法,则编译器总是绑定该实例方法。

  4.当编译器遇到方法调用时,它首先在该类型的实例方法中寻找匹配的方法。

    如果未找到任何匹配方法,编译器将搜索为该类型定义的任何扩展方法,并且绑定到它找到的第一个扩展方法

namespace Demo{    class Program    {        static void Main(string[] args)        {            var stu = new Student() { Name = "joey", Age = 25 };            //调用实例方法            Console.WriteLine(stu.ToString());            //调用扩展方法 。调用的时候会vs 智能感知会在方法边上加个向下的箭头,表示这是一个扩展方法            Console.WriteLine(stu.Hello());        }    }    public class Student    {        public string Name { get; set; }        public int Age { get; set; }        //重写ToString方法        public new string ToString()        {            return "Name: " + this.Name + "\nAge: " + this.Age;        }    }    public static class ExtendMehods    {        //使用this 关键字扩展类的方法        public static string Hello(this Student stu)        {            return "嗨!大家好!我叫 " + stu.Name + ",我今年 " + stu.Age + " 岁";        }    }}

 

转载于:https://www.cnblogs.com/ecollab/p/6225183.html

你可能感兴趣的文章
Heritrix 3.1.0 源码解析(十六)
查看>>
uva 270 Lining Up
查看>>
数组集合oracle 11g PL/SQL Programming学习五
查看>>
[Python] 安装及环境配置
查看>>
Qt中float类型与QString类型相互转换
查看>>
cocos2d-x学习笔记之辅助工具
查看>>
C/C++程序员应聘常见面试题剖析(经典)
查看>>
ASP.net Web API综合示例
查看>>
ie6下a标签使用location.href 不跳转的解决办法
查看>>
向量样本【模式识别】感知器 Perceptron
查看>>
委托杂谈
查看>>
《Android内核剖析》读书笔记 第7章 理解Context
查看>>
IOS开发之UILabel动态高度设置方法
查看>>
儿子购买的书
查看>>
让Android中的webview支持页面中的文件上传
查看>>
hbase regionserver挂掉的问题
查看>>
延迟段创建的学习-实验
查看>>
C/C++ 内存对齐
查看>>
php 在函数内引用全局变量 讲解引用
查看>>
数据结构和算法系列1 线性表之顺序表
查看>>