首页 > 系统相关 >windows C#-为枚举创建新方法

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

时间:2024-12-18 23:30:14浏览次数:9  
标签:Console windows Grades grade C# 枚举 static passing Passing

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

示例

在下面的示例中,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 类还包含一个动态更新的静态变量,并且扩展方法的返回值反映了该变量的当前值。 这表明在幕后,将在定义扩展方法的静态类上直接调用这些方法。 

标签:Console,windows,Grades,grade,C#,枚举,static,passing,Passing
From: https://blog.csdn.net/m0_72813396/article/details/144571534

相关文章

  • #渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍04-盲SQL注入(Blind SQL Injection)
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。目录一、盲SQL注入(BlindSQLInjection)的概念二、盲SQL注......
  • CVPR-23 Towards Universal Fake Image Detectors that Generalize Across Generative
    论文标题:TowardsUniversalFakeImageDetectorsthatGeneralizeAcrossGenerativeModels论文链接:https://arxiv.org/abs/2302.10174 01摘要翻译随着生成模型的快速发展,人们对通用假图像检测器的需求日益增长。在这项工作中,我们首先展示了现有的模式,即训练一个深......
  • 【C语言的奥秘11】指针知识点总结(续)
    目录一、指针的运算1、指针与整数相加减2、指针-指针(地址-地址)3、指针的关系运算六、指针和数组七、二级指针八、指针数组一、指针的运算1、指针与整数相加减看一下下面的代码:#include<stdio.h>intmy_strlen(char*str){intcount=0;while(*str!='......
  • 169. 大学生HTML5期末大作业 ―【鲸鱼动物主题精品网页 (5页)】 Web前端网页制作 html5+
    目录一、网页概述二、网页文件三、网页效果四、代码展示1.html2.CSS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强欢迎来到我的CSDN主页!Web前端网页制作、大学生期末大作业、课程设计、毕业设计、网页模版源码、学习资料等,更多优质博客文章、网......
  • ZZNUOJ_1341:简单密码破解(C/C++/Java)
    题目描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。 假设渊子原来一个BBS上的密码为zvbo941987,为了方便记忆,他通过一种算法把这个密码变换成YUANzi1987,这个密码是他的名......
  • How to synchronize Elasticsearch with MySQL
    HowtosynchronizeElasticsearchwithMySQLUsingLogstashtocreateadatapipelinkingElasticsearchtoMySQLinordertobuildanindexfromscratchandtoreplicateanychangesoccurringonthedatabaserecordsintoElasticsearchhttps://towardsdatasc......
  • Cesium-(Primitive)-(CorridorGeometry)
    CorridorGeometry效果:以下是CorridorGeometry类的构造函数属性,以表格形式展示:属性名类型默认值描述positionsArray.定义走廊中心的坐标点数组。widthnumber走廊边缘之间的距离,单位为米。ellipsoidEllipsoidEllipsoid.default用作参考的椭......
  • AFSD搅拌摩擦沉积增材制造稳态温度场、应力场建模——Comsol弱耦合模拟分享
    目录搅拌摩擦沉积增材制造(AFSD)是一种新兴的固态增材制造技术,它结合了传统摩擦搅拌焊接(FSW)和增材制造(AM)的优点。该技术通过旋转工具将材料逐层沉积到基板上,形成三维金属零件。文章目录目录前言一、Comsol是什么?二、模型参数1.材料参数2.工艺参数3.其他环境参......
  • docker安装与使用之保姆级教程
    前言:一、定义Docker容器是一种轻量级、可移植、自包含的软件打包技术。它是通过Docker引擎创建的运行实例,将软件及其依赖项打包到一个独立的单元中,使得应用程序可以在不同的计算环境中以相同的方式运行。简单来说,就好像是一个装满了应用程序和它运行所需一切(如代码、运行......
  • 《C++与 Armadillo:线性代数助力人工智能算法简化之路》
    在人工智能领域,线性代数运算可谓是构建各类模型与算法的基石。从神经网络中的矩阵乘法、向量运算,到数据处理中的特征分解、奇异值分解等,无一不依赖高效且精准的线性代数计算。而C++作为一种强大且高效的编程语言,在人工智能开发中有着独特的地位。Armadillo库的出现,则为在......