[英]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.