【Bug】拓展方法必须在非泛型静态类中定义
2023-09-11 14:14:50 时间
Bug
原:
修改:
拓展方法
1.定义:
(1)扩展方法能使你能够向现有类型添加“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。
(2)扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样调用。
注:
(1)扩展方法的第一个参数指定该方法作用于那个类型,并且此参数用this为前缀修饰。仅当你使用using指令将命名空间显示导入到源码之中后,扩展方法才位于范围中。
(2)在代码中,可以使用实例方法语法调用改扩展方法,但是,编译器生成的中间语言(IL)会将代码转换为对静态方法的调用。因此,并未真正 违反封装原则,实际上,扩展方法无法访问到他们所扩展类型中的私有变量。
(3)不能重写扩展方法
(4)与接口或者类具有相同名称和签名的扩展方法永远不会被调用(编译时优先级:实例方法 > 扩展方法)
(5)所处的类必须是static修饰,因为拓展方法是静态的
(方法签名:c#中指返回值和参数)
2. 简单代码示例:
步骤一:定义扩展方法,namespace为PipelineExtensions
namespace PipelineExtensions
{
public static class StringExtensions
{
// 扩展方法---计算字符串长度
public static int WordCount(this string str)
{
return str.Length;
}
}
}
步骤二:使用此扩展方法
(1)先通过using把namespace引入到使用文件中
(2)使用扩展方法 WordCount(this string str)中的第一个参数类型string为类型的参数调用此扩展方法
using PipelineExtensions;
using System;
namespace Pipeline
{
public class Program
{
public static void Main(string[] args)
{
string ex = "yx123456";
int count = ex.WordCount();
Console.WriteLine(count);
Console.ReadKey();
}
}
}
或者当成普通静态方法调用
StringExtensions.WordCount("yx123456");
相关文章
- 五款轻量型bug管理工具横向测评
- [Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
- Bug避障算法简介
- 战斗bug技巧全攻略
- bug-sqlite3
- IOS6地图callout在前bug解决方法
- [Web] Possible bug for Cache the network request
- 修正ECMALL在PHP5.3以上版本中无法开启支付方式的BUG
- SAP Spartacus 和 SmartEdit 集成的一些 bug
- paip.c3p0 nullpointexcept 配置文件根路径读取bug 解决
- 成功解决ValueError: array must not contain infs or NaNs(花了好几个小时解决了这个最离奇的bug)
- Bug总结:python语言中出现的import error错误的解决思路
- 游戏开发常遇到数据一致性BUG,怎么解?
- 【C++】指针引发的bug
- OJ2.0userInfo页面Modify逻辑bug修复,search功能逻辑实现
- leaflet 加载WMTS数据显示图形,解决 leaflet.TileLayer.WMTS的bug问题(099)
- 说说下如何提交一个高质量的bug?
- 【Bug记录】Error:Internal error: (java.lang.IllegalAccessError) class com.intellij.util.io
- 完美解决ubuntu:签名无效 KEYEXPIRED、EXPKEYSIG更新出bug
- 为啥程序会有bug?