C#"这是怎样的"关键字工作来限定静态方法中的参数?

时间:2014-05-04 16:12:43

标签: c# wpf this richtextbox

我在以下方法中理解参数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以这种方式使用过。

2 个答案:

答案 0 :(得分:5)

GetFormattedText()不是常规方法,而是extension method

您可以这样称呼它:

 document.GetFormattedText()

或者这个:

 ClassName.GetFormattedText(document)

答案 1 :(得分:1)

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

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