我最近注意到以下代码基本上定义了一个类方法
public Func<string, string> SampleMethod = inputParam =>
{
return inputParam.ToUpper();
};
Run Code Online (Sandbox Code Playgroud)
这与以老式方式进行相同
public string SampleMethod(string inputParam )
{
return inputParam.ToUpper();
}
Run Code Online (Sandbox Code Playgroud)
我的问题 - 为什么我更喜欢第一个?我的眼睛可能更训练,更快地理解第二种风格.我发现它类似于SMS术语和普通旧英语之间的区别.
这两件事情根本不同.前者是委托类型的字段,而后者实际上是一种方法.我能想到的最小的区别是你可以在运行时动态修改第一个,并在第二个修复时为其分配另一个方法引用.
如果你的目的是为C#中的一个类编写一个简单的方法,你通常不应该喜欢第一个而不是第二个.
一个让第一个非常脆弱的例子:
var c = new SomeClass();
c.SampleMethod = inputParam => inputParam.ToLower();
c.DoSomeTaskThatReliesOnSampleMethodReturningAnUpperCaseString();
c.SampleMethod = null;
c.DoSomeTaskThatCallsSampleMethod(); // NullReferenceException
Run Code Online (Sandbox Code Playgroud)
这种编程风格在Javascript等语言中很常见,其中一个对象基本上是一个建立在简单字典上的动态生物.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |