是否可以制作多参数属性?

use*_*621 0 c#

有没有办法做这样的事情:

class blabla
{
   string[] a;
   string ciao(int row, string text)
   {
       set { a[row] = text;}
       get { return a[row;}
   }
}
Run Code Online (Sandbox Code Playgroud)

(是的,我知道我最终可以制作自己的方法)

Sea*_*ean 6

您可以做的最好是使用index属性this:

class Foo
{
 string[] row;

 string this[int row]
 {
    set {a[row] = value;}
    get {return a[row];}
 }
}
Run Code Online (Sandbox Code Playgroud)

然后,您使用[]运算符访问它:

Foo f;
f[1] = "hello";
Run Code Online (Sandbox Code Playgroud)

拥有以这种方式运行的命名属性是不可能的.

另外,从.NET开始,没有理由不能对属性进行参数化.如果你看一下PropertyInfo类,你会发现一个属性只是一个get方法和一个set方法,两者都可以带参数.实际上,这是索引属性的工作方式(以及属性).只是C#没有通过语言公开这个功能.

  • 另外:它是[VB有](http://msdn.microsoft.com/en-us/library/bc3dtbky.aspx)和C#没有的功能之一. (2认同)