[英]Impossible to use ref and out for first ("this") parameter in Extension methods?
[英]How to use indexers with Extension Methods having out parameter and function calls
是否可以使用帶extension
方法的indexers
。
例如。 僅將其視為一個示例。
public static object SelectedValue(this DataGridView dgv, string ColumnName)
{
return dgv.SelectedRows[0].Cells[ColumnName].Value;
}
編輯
用法mygrid.SelectedValue("mycol")
如何使用它作為索引器mygrid.SelectedValue["mycol"]
而不是上面的一個。
是否可以像這樣使用它? mygrid.SelectedValue["mycol"](out somevalue);
獲得這種價值的語法是什么? 任何簡單的示例或鏈接都可以。
嗯,這里有兩個問題:
SelectedValue
成為返回可索引的屬性 所以不,你在那里指定的語法是行不通的。 你可以讓它工作:
mygrid.SelectedValue()["mycol"]
但那有點難看。 如果我是你,我會堅持使用方法表格。
1 C#4支持在COM對象上調用命名索引器。
讓我試着澄清Extension Method
的用法和意圖。
考慮Extension Method
public static bool IsNullOrEmpty(this string source)
{
return source == null || source == string.Empty;
}
現在,使用此Extension Method
擴展string
類
var myString = "Hello World";
Assert.AreEqual(myString.IsNullOrEmpty(), false);
這就是.NET在編譯時所做的事情:
public static bool IsNullOrEmpty(string source)
{
return source == null || source == string.Empty;
}
用我們的舊學校
var myString = "Hello World";
Assert.AreEqual(IsNullOrEmpty(myString), false);
擴展方法只不過是我們過去所做的可視化。
好吧,擴展索引器是可能的,但微軟沒有想到它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.