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

方法书写模式

  •  2
  • alwayslearning  · 技术社区  · 16 年前

    我最近注意到下面的代码基本上定义了一个类方法

    public Func<string, string> SampleMethod = inputParam =>
    {
        return inputParam.ToUpper();
    };
    

    public string SampleMethod(string inputParam ) 
    {
        return inputParam.ToUpper();
    }
    

    我的问题-为什么我更喜欢第一个而不是第二个?我的眼睛可能更容易理解第二种风格。我发现它与SMS行话和普通的古英语之间的区别很相似。

    3 回复  |  直到 16 年前
        1
  •  6
  •   Mehrdad Afshari    16 年前

    这两件事是 根本不同 . 前者是一个例子 领域

    如果您的目的是为C#中的类编写一个简单的方法,那么通常不应该选择第一个方法而不是第二个方法。

    第一个极端脆弱的例子是:

    var c = new SomeClass();
    c.SampleMethod = inputParam => inputParam.ToLower();
    c.DoSomeTaskThatReliesOnSampleMethodReturningAnUpperCaseString();
    c.SampleMethod = null;
    c.DoSomeTaskThatCallsSampleMethod(); // NullReferenceException
    

        2
  •  2
  •   Brian Rasmussen    16 年前

    它们其实根本不一样。第二个是常规成员方法,它在输入字符串上返回ToUpper。

    另一方面,第一个变量是Func成员变量,它恰好指向实现相同功能的委托。但是,由于这是一个方法指针,您可以在运行时用相同类型的任何其他委托替换该委托。也就是说,您可以完全重新定义调用此方法的含义。

        3
  •  0
  •   David_001    16 年前