zoukankan      html  css  js  c++  java
  • C# 为枚举创建新方法

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

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

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Linq;
    
    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("
    Raising the bar!
    ");
                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 类还包含一个动态更新的静态变量,并且扩展方法的返回值反映了该变量的当前值。  这表明在幕后,将在定义扩展方法的静态类上直接调用这些方法。  

  • 相关阅读:
    学习之spring属性文件注入
    学习之spring自带缓存
    FreeMarker语法
    spring mvc 拦截器
    spring mvc 全局异常处理
    spring mvc 多视图配置
    学习之spring注解DI疑惑
    @Transactional详解
    mybatis关联查询
    shiro 实现 用户 a 操作b 的权限 ,用户 b 能够及时获知。b不需要退出登陆 。 关闭鉴权缓存,或者不配置缓存
  • 原文地址:https://www.cnblogs.com/rinack/p/5695351.html
Copyright © 2011-2022 走看看