C#扩展索引器?

Bla*_*ter 8 c# datagridview indexer

是否可以使用扩展方法来扩展索引器?我希望能够使用标题文本从给定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;
        }
    }

我想要类似的索引器.谢谢.

dle*_*lev 15

索引器实际上是属性,C#中不存在扩展属性.所以这不能按照你想要的方式完成.

有关主题的一些背景信息,请参阅此博客文章,并解释为何考虑该功能,但最终在C#3.0中省略.


Fem*_*ref 5

不,不是.扩展方法只是静态方法调用的语法糖,索引器是属性.

object o = new object();
o.ExtensionMethod();
Run Code Online (Sandbox Code Playgroud)

相当于

object o = new object();
Extensions.ExtensionMethod(o);
Run Code Online (Sandbox Code Playgroud)

扩展方法不会以任何方式更改类,它们只是为您提供了一个更简单的接口来调用静态方法.