C# 语法超越了我,初学者



好的,所以对C#还是很陌生的,所以很抱歉,如果这很明显......

有些代码我无法遵循,这些代码是由比我更擅长 C# 的人创建的。

我们有一个类,称之为"CC",它有许多字段,其中一个是"FORM_NBR"。

所以,简而言之:

public class CC
{
public CC();
//Many, many fields...
...
public long FORM_NBR { get; set; }
...
}

在某些时候,会创建一个对象...

CC c = new CC();

然后这一行被称为:

c.FORM_NBR = c.FORM_NBR.GetCheckDigit(' ');

现在,在我们继承的库深处有这个函数:

public static short GetCheckDigit(this long nFormNbr, char chFormTypCd)
{
short nCkDgt = 0;   // Default to 0
switch (chFormTypCd)
{
//Many, many cases...
...
default:
nCkDgt = CalculateCheckDigit(nFormNbr);
break;
}
return nCkDgt;
}

我的问题是这个。 作为C#的新手,GetCheckDigit是如何从长传中调用的? 这是什么语法?

我什至不知道我将如何描述/谷歌这个!

这是一个extension method

扩展方法使您能够将方法"添加"到现有类型,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们的调用就像它们是扩展类型的实例方法一样。对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法和在类型中实际定义的方法之间没有明显的区别。

寄件人: https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

在这篇SO帖子中有一个很好的例子:

如何扩展 C# 内置类型,如字符串?

GetCheckDigit 是 long 类型的扩展方法

https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

最新更新