2014-05-04 29 views
0

我有問題理解的說法this flowDocument doc在下面的方法:C#「this」關鍵字如何在靜態方法中限定參數?

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

+7

它的擴展方法 – thumbmunkeys

回答

5

GetFormattedText()是不正常的方法,而是一個extension method

你可以這樣調用:

document.GetFormattedText() 

或本:

ClassName.GetFormattedText(document) 
1

這是一個extension method的語法,所述參數是所述FlowDocument對象的方法被調用:

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

+1謝謝... – Sabuncu