C#";这个";关键字工作来限定静态方法中的参数

本文关键字:quot 静态方法 参数 工作 这个 关键字 | 更新日期: 2023-09-27 18:01:41

我在理解以下方法中的参数this flowDocument doc时遇到问题:

public static FormattedText GetFormattedText(this FlowDocument doc)
{
    if (doc == null)
    {
        throw new ArgumentNullException("doc");
    }
    ...
}

调用方在调用上述方法时不指定参数:

myRichTextBox.TextChanged +=
    new TextChangedEventHandler((o, e) => myRichTextBox.Width = 
        myRichTextBox.Document.GetFormattedText().WidthIncludingTrailingWhitespace + 20);

我确信该方法确实而不是创建doc本身。我以前从未见过以这种方式使用this

C#";这个";关键字工作来限定静态方法中的参数

GetFormattedText()不是一个普通方法,而是一个扩展方法。

你可以这样称呼它:

 document.GetFormattedText()

或者这个:

 ClassName.GetFormattedText(document)

这是扩展方法的语法,参数是调用该方法的FlowDocument对象:

myRichTextBox.Document.GetFormattedText().WidthIncludingTrailingWhitespace + 20);
                   ^           
                   |
-------------------|