有没有办法做这样的事情:
class blabla
{
string[] a;
string ciao(int row, string text)
{
set { a[row] = text;}
get { return a[row;}
}
}
(是的,我知道我最终可以制作自己的方法)
答案 0 :(得分:6)
您可以做的最好的事情是使用索引属性this
:
class Foo
{
string[] row;
string this[int row]
{
set {a[row] = value;}
get {return a[row];}
}
}
然后,您可以使用[]
运算符访问它:
Foo f;
f[1] = "hello";
不可能有一个行为方式的命名属性。
另外,从.NET开始,没有理由不能对属性进行参数化。如果查看PropertyInfo类,您可以看到属性只是一个get方法和一个set方法,两者都可以获取参数。实际上,这是索引属性的工作方式(以及属性)。只是C#没有通过语言公开这个功能。
答案 1 :(得分:1)
您可以创建索引器属性
public string this[int index]
重载你班级的[]操作符,允许你在[]之后和=
之间取一个参数您可以更改索引参数的类型,但这可能会使调用者感到困惑。
http://msdn.microsoft.com/en-us/library/aa288464(v=vs.71).aspx
class blabla
{
private string[] a;
string this[int row]
{
set { a[row] = value;}
get { return a[row;}
}
}
语法有效,因此value
的类型由重载运算符的返回类型指定。