C# 扩展索引器?
是否可以使用扩展方法来扩展索引器?我希望能够使用如下标题文本从给定的C# 扩展索引器?,c#,datagridview,indexer,C#,Datagridview,Indexer,是否可以使用扩展方法来扩展索引器?我希望能够使用如下标题文本从给定的DataGridViewRow的DataGridViewCell中获取单元格的值: object o = row["HeaderText"]; 我有这个密码 public static class Ext { public static object Cells(this DataGridViewRow r, string header) { foreach (DataGridViewCell
DataGridViewRow
的DataGridViewCell
中获取单元格的值:
object o = row["HeaderText"];
我有这个密码
public static class Ext
{
public static object Cells(this DataGridViewRow r, string header)
{
foreach (DataGridViewCell c in r.Cells)
{
if (c.OwningColumn.HeaderText == header)
{
return c.Value;
}
}
return null;
}
}
我想要类似的索引器。谢谢。不,您不能使用扩展方法扩展运算符,如索引器。不幸的是,不可以。这实际上是一个“扩展属性”,不受支持。您必须将其作为方法,就像您当前的代码一样
请注意,已在Connect on上请求扩展属性,但从未包含在语言中。索引器实际上是属性,而扩展属性在C#中不存在。所以这不是你想要的方式
有关此主题的一些背景信息,请参阅,并解释为什么考虑了该功能,但最终在C#3.0中忽略了该功能。不,这是不可能的。扩展方法仅限于方法。它们不能提供属性、索引器或构造函数不,它不是。扩展方法只是静态方法调用的语法糖,索引器是一个属性 做 相当于
object o = new object();
Extensions.ExtensionMethod(o);
扩展方法不会以任何方式更改类,它们只是为您提供了一个调用静态方法的更简单接口。作为扩展属性的解决方案,您可以使用基于反射的对象索引器代码为对象实现Getter和Setter扩展方法。索引器是C#中的一个运算符!
object o = new object();
Extensions.ExtensionMethod(o);