c# - 在将 "this"参数命名为 C# 中的扩展方法时,您更喜欢哪种成语(如果有),为什么?

标签 c# .net c#-3.0 extension-methods idioms

C# 扩展方法的第一个参数是调用扩展方法的实例。我采用了一个成语,在其他地方没有看到它,称该变量为“self”。如果其他人也在使用它,我一点也不会感到惊讶。这是一个例子:

public static void Print(this string self)
{
   if(self != null) Console.WriteLine(self);
}

但是,我开始看到其他人将该参数命名为“@this”,如下所示:

public static void Print(this string @this)
{
   if(@this != null) Console.WriteLine(@this);
}

作为第三种选择,有些人根本不喜欢任何成语,说“self”和“@this”不提供任何信息。我想我们都同意,有时参数有一个清晰、有意义的名称,具体到它的目的,这比“self”或“@this”更好。有些人更进一步说您总是可以想出一个更有值(value)的名字。所以这是另一个有效的观点。

你还见过哪些成语?您更喜欢哪种成语,为什么?

最佳答案

根据用途,我很正常地命名它。因此,“source”表示 LINQ 运算符的源序列,或者“argument”/“parameter”表示执行参数/参数检查等的扩展。

我不认为它必须与“this”或“self”特别相关 - 它不会提供有关参数含义的任何额外信息。这当然是最重要的事情。

编辑:即使在没有太多明显意义的情况下,我也更喜欢一些意义而不是没有。 “self”或“@this”提供了什么信息?仅仅是它是扩展方法中的第一个参数——而且该信息已经很明显了,因为该参数是用 this 修饰的。在给出 theStringToPrint/self 选项的示例中,我将使用 outputText 代替 - 它传达了您需要了解的有关参数的所有信息, 国际海事组织。

关于c# - 在将 "this"参数命名为 C# 中的扩展方法时,您更喜欢哪种成语(如果有),为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/716609/

相关文章:

c# - Mvc6 路由(RoutePrefix 和 AreaPrefix)

c# - 在 Saucelabs 中使用 selenium c# 进行浏览器扩展测试

c# - 更改 WCF 引用 URL .Net Core

.net - 通过 COM 从 Excel 调用的 .NET 自动化服务器的生命周期

c#-3.0 - 在 C# 中的接口(interface)上具有扩展方法的伪多重继承?

c# - 在给定支持字段的情况下获取 C# 自动属性的 PropertyInfo

c# - 尝试将结构转换为 byte[] 时的方法访问预期

c# - 是什么让 ValueType 类特别?

.net - 在 TokenStream Lucene.Net 中获取 TermAttribute

c# - 在 C# 中,什么是 monad?