如何将索引器与具有参数和函数调用的扩展方法一起使用
是否可以将索引器
与扩展
方法一起使用。
例如。仅将其视为示例。
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);
获取此类值的语法是什么。任何简单的示例或链接都可以。
Is it possible to use indexers
with extension
methods.
eg. Consider it as an example only.
public static object SelectedValue(this DataGridView dgv, string ColumnName)
{
return dgv.SelectedRows[0].Cells[ColumnName].Value;
}
EDIT
usage
mygrid.SelectedValue("mycol")
How to use it as an indexer
mygrid.SelectedValue["mycol"]
rather than above one.Is it possible to use it like this as well ?
mygrid.SelectedValue["mycol"](out somevalue);
What are the syntax of getting this kind of values. Any simple example or link will work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,这里有两个问题:
SelectedValue
返回可索引内容的属性所以不,您在那里指定的语法将不起作用。你可以让它工作:
但这有点难看。如果我是你,我会坚持使用方法形式。
1 C# 4 支持在 COM 对象上调用命名索引器。
Well, there are two issues here:
SelectedValue
a property returning something indexable insteadSo no, the syntax you've specified there won't work. You could get this to work:
but that's a bit ugly. I'd stick with the method form if I were you.
1 C# 4 supports calling named indexers on COM objects.
让我尝试阐明
扩展方法
的用法和意图。考虑
扩展方法
现在,您可以使用此
扩展方法
扩展您的string
类这就是.NET在编译时所做的事情:
使用我们老式的
扩展方法只不过是对我们过去所做的事情的可视化。
好吧,扩展索引器是可能的,但微软没有考虑这一点。
Let me try to clarify the usage and intentions of
Extension Method
.Consider a
Extension Method
Now you extend your
string
class with thisExtension Method
This is what .NET does on compilation:
Using our old school
Extension method is nothing but a visualization to what we were used to do.
Well, extending indexers could be possible but Microsoft did not think about it.