我最近注意到下面的代码基本上定义了一个类方法
public Func<string, string> SampleMethod = inputParam =>
{
return inputParam.ToUpper();
};
这和老式的方式一样
public string SampleMethod(string inputParam )
{
return inputParam.ToUpper();
}
我的问题 - 为什么我更喜欢第一个而不是第二个?我的眼睛可能受过更多训练,可以更快地理解第二种风格。我发现它类似于 SMS 行话和普通英语之间的区别。
最佳答案
这两件事根本不同。前者是一个委托(delegate)类型的字段,而后者实际上是一个方法。我能想到的最小区别是,您可以在运行时动态修改第一个,并在第二个固定的情况下为它分配另一个方法引用。
如果您的目的是在 C# 中为类编写一个简单的方法,您通常不应该优先选择第一个而不是第二个。
一个让第一个非常脆弱的例子:
var c = new SomeClass();
c.SampleMethod = inputParam => inputParam.ToLower();
c.DoSomeTaskThatReliesOnSampleMethodReturningAnUpperCaseString();
c.SampleMethod = null;
c.DoSomeTaskThatCallsSampleMethod(); // NullReferenceException
这种编程风格在 Javascript 等语言中很常见,在这种语言中,对象基本上是建立在简单字典之上的动态生物。
关于c# - 方法书写模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2213730/