是否可以将indexers
与extension
方法一起使用。
例如。仅将其视为一个示例。
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);
获取此类值的语法是什么?任何简单的例子或链接都可以。
答案 0 :(得分:4)
嗯,这里有两个问题:
SelectedValue
属性返回可转换的内容所以不,你在那里指定的语法不起作用。你可以让它工作:
mygrid.SelectedValue()["mycol"]
但这有点难看。如果我是你,我会坚持使用方法表格。
1 C#4支持在COM对象上调用命名索引器。
答案 1 :(得分:0)
让我试着澄清Extension Method
的用法和意图。
考虑Extension Method
public static bool IsNullOrEmpty(this string source)
{
return source == null || source == string.Empty;
}
现在,您使用此string
Extension Method
课程
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);
扩展方法只不过是我们过去所做的可视化。
嗯,扩展索引器是可能的,但微软没有想到它。