代码之家  ›  专栏  ›  技术社区  ›  RandomProgrammer

类型和可空<type>

  •  11
  • RandomProgrammer  · 技术社区  · 15 年前

    为了简单起见,假设我想为int类型编写一个扩展方法?和int:

    public static class IntExtentions
    {
        public static int AddOne(this int? number)
        {
            var dummy = 0;
            if (number != null)
                dummy = (int)number;
    
            return dummy.AddOne();
        }
    
        public static int AddOne(this int number)
        {
            return number + 1;
        }
    }
    

    这只能用一种方法完成吗?

    2 回复  |  直到 15 年前
        1
  •  21
  •   Steve Willcock    12 年前

    不幸的是没有。你能做整数吗?方法调用不可为null的方法非常容易,因此不需要用两个方法复制任何逻辑,例如。

    public static class IntExtensions
    {
        public static int AddOne(this int? number)
        {
            return (number ?? 0).AddOne();
        }
    
        public static int AddOne(this int number)
        {
            return number + 1;
        }
    }
    
        2
  •  10
  •   JaredPar    15 年前

    不,你不能。这可以通过编译以下代码进行实验验证

    public static class Example {
      public static int Test(this int? source) {
        return 42;
      }
      public void Main() {
        int v1 = 42;
        v1.Test();  // Does not compile
      }
    }