当前位置: 首页 > article >正文

windows C#-为枚举创建新方法

可使用扩展方法添加特定于某个特定枚举类型的功能。

示例

在下面的示例中,Grades 枚举表示学生可能在班里收到的字母等级分。 该示例将一个名为 Passing 的扩展方法添加到 Grades 类型中,以便该类型的每个实例现在都“知道”它是否表示合格的等级分。

using System;

namespace EnumExtension
{
    // Define an extension method in a non-nested static class.
    public static class Extensions
    {
        public static Grades minPassing = Grades.D;
        public static bool Passing(this Grades grade)
        {
            return grade >= minPassing;
        }
    }

    public enum Grades { F = 0, D=1, C=2, B=3, A=4 };
    class Program
    {
        static void Main(string[] args)
        {
            Grades g1 = Grades.D;
            Grades g2 = Grades.F;
            Console.WriteLine("First {0} a passing grade.", g1.Passing() ? "is" : "is not");
            Console.WriteLine("Second {0} a passing grade.", g2.Passing() ? "is" : "is not");

            Extensions.minPassing = Grades.C;
            Console.WriteLine("\r\nRaising the bar!\r\n");
            Console.WriteLine("First {0} a passing grade.", g1.Passing() ? "is" : "is not");
            Console.WriteLine("Second {0} a passing grade.", g2.Passing() ? "is" : "is not");
        }
        /* Output:
            First is a passing grade.
            Second is not a passing grade.

            Raising the bar!

            First is not a passing grade.
            Second is not a passing grade.
        */
    }
}

请注意,Extensions 类还包含一个动态更新的静态变量,并且扩展方法的返回值反映了该变量的当前值。 这表明在幕后,将在定义扩展方法的静态类上直接调用这些方法。 


http://www.kler.cn/a/442106.html

相关文章:

  • mysql_real_connect的概念和使用案例
  • OpenHarmony 4.1 SDK11 北向应用开发笔记
  • Python Pyside6 加Sqlite3 写一个 通用 进销存 系统 初型
  • 技术洞察:C++在后端开发中的前沿趋势与社会影响
  • AI-Talk开发板之替换唤醒词
  • 语义检索效果差?深度学习rerank VS 统计rerank选哪个
  • 《向量数据库指南》——Milvus Cloud 2.5:Sparse-BM25引领全文检索新时代
  • 英飞源嵌入式面试题及参考答案
  • torch.multiprocessing 向Process传递对象参数报错 Can‘t pickle local object
  • 【微服务】SpringBoot 整合Redis Stack 构建本地向量数据库相似性查询
  • 研华运动控制卡 (如PCI1245)单轴编辑路
  • Linux-设备树
  • IDEA 使用 Gradle 强制清除缓存,更新快照
  • MySQL学习之DDL操作
  • xlsx预览
  • LeetCode 热题 100_K 个一组翻转链表(31_25_困难_C++)(四指针法)
  • LSTM长短期记忆网络
  • QNX系统和android系统文件互拷贝
  • 《两道有趣的编程题解析与解法》
  • Spring 不推荐使用@Autowired
  • LeetCode5. 最长回文子串(2024冬季每日一题 35)
  • 在微服务架构中,处理日志的中间件和工具非常重要,它们帮助开发者收集、存储、分析和监控日志数据。一些常用的日志处理中间件及其特点、优缺点介绍。
  • 计算机网络信息系统安全问题及解决策略
  • 在优化算法中常见哪些数学函数(根据数学性质分类)
  • 用python实现滑雪小游戏,附源码
  • CSS 核心属性详解