C#中的扩展方法

embedded/2024/10/19 19:44:03/

C#中的扩展方法是一种非常实用的语言特性,它允许我们在不修改原有类定义的情况下,为其添加新的方法。这种机制极大地增强了代码的灵活性和可维护性,特别是在处理第三方库或无法直接修改源码的类时尤为有用。下面,我将详细阐述C#扩展方法的概念、使用场景、语法规范,并通过实例代码和详尽注释来说明如何创建和调用扩展方法。

一、扩展方法要求如下

1、声明扩张方法的类必须声明为static。
2、声明扩展方法本身必须声明为 public static。
3、声明扩展方法必须包含关键字this作为它的第一个参数类型。

二、案例

首先在main方法中创建了double数据类型的变量,由于double数据类型没有round,通常可以借助第三方库math去处理,此时可以利用扩展方法,下面声明了静态的DoubleExtension类,对应的扩展方法必须是公有的和静态的,并且第一个参数需要包含this关键字,最后x就可以使用 . 去访问扩展方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Program{static void Main(string[] args){double x = 3.14159;double y = x.Round(4);Console.WriteLine(y);Math.roung}}static class DoubleExtension{public static double Round(this double input, int digits) {return Math.Round(input, digits);}}}

参考:C# 扩展方法详解:概念、应用场景与实战示例


http://www.ppmy.cn/embedded/23952.html

相关文章

数据结构-链表

链表:链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 自己实现一个链表: public class SingleLinkedList {//头插法public void addFirst(int data){}//尾插法public void addLast(int data)…

[Rust开发]在Rust中使用geos的空间索引编码实例

geos的空间索引用的是STRTree,这是一种基于STR算法的四叉树索引,有如下特点: 使用Sort-Tile-Recursive (STR) 算法创建的仅查询的R-tree空间索引 STR(Sort-Tile-Recursive,递归网格排序) 基本思想是将所有的矩形以“tile”的方式分配到r/n&a…

TablePlus for Mac/Win:开启高效数据开发新纪元

在当今数字化时代,数据的重要性日益凸显。无论是企业还是个人,都需要一款强大而实用的本地原生数据开发软件来提升工作效率。而 TablePlus for Mac/Win 正是这样一款卓越的工具,它为用户带来了全新的体验,让数据开发变得更加轻松、…

阿里巴巴瓴羊基于 Flink 实时计算的优化和实践

摘要:本⽂整理⾃阿里云智能集团技术专家王柳焮⽼师在 Flink Forward Asia 2023 中平台建设专场的分享。内容主要为以下四部分: 阿里巴巴瓴羊基于 Flink 实时计算的平台演进Flink 能力优化与建设基于 Flink 的最佳实践未来规划 1. 阿里巴巴瓴羊基于 Flink…

Three.js相比Babylon.js的优势

Three.js和Babylon.js都是流行的WebGL框架,用于在浏览器中创建和展示3D内容。它们各自有不同的优势,以下是Three.js相比Babylon.js的一些优势。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.社区和文档支持…

git commit 提交信息规范

常见用法 # 将暂存区内容提交到版本库, 进入 vi 命令界面输入提交信息 git commit# 将某些已被跟踪的文件提交到版本库(包含工作区和版本库) git commit [file1] [file2] [...]# 将暂存区内容提交到版本库, 无需进入 vi 命令界面输入提交信息 git comm…

代码随想录-算法训练营day27【回溯03:组合总和、分割回文串】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第七章 回溯算法part03● 39. 组合总和 ● 40.组合总和II ● 131.分割回文串详细布置 39. 组合总和 本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制题目链接/文章讲解…

go圣经 ——方法

这里只是记录了自己学过一遍但是在圣经(狼吞虎咽)中又看到的新鲜玩意 我们又称之为选择器 package mainimport "fmt"type Rect struct {width, height float64 }// 定义一个方法来计算矩形的面积 func (r Rect) Area() float64 {return r.wi…