c#类属性,通过索引获取它们

本文关键字:索引 获取 属性 | 更新日期: 2023-09-27 18:08:31

是否可以通过索引访问属性?

以Person类为例,它可以具有属性"BirthNo"answers"Gender"。如果我想访问BirthNo的值,是否有可能以任何方式写入p.[0]。价值还是我必须写人,出生,价值?

Person p = new Person
//I have this:
string birthNo = p.BirthNo.Value;
//I want this: 
string birthNo = p.[0].Value;

c#类属性,通过索引获取它们

p.[0].Value不是正确的c#代码,所以你肯定不能写。

你可以尝试使用索引器,但是你必须自己写很多逻辑,就像这样:

public T this[int i]
{
    get
    {
        switch(i)
        {
            case 0: return BirthNo;
            default: throw new ArgumentException("i");
        }
    }
}

调用代码是这样的:

p[0].Value

然而,这是一个可怕的东西,你甚至不应该考虑那样使用它!*

您可以在Person类中拥有一个字符串Dictionary,并在属性更改时将字符串值写入其中。像这样:

class Person
    {
        Person()
        {
            properties.Add(0, "defaultBirthNo");
        }
        Dictionary<int, string> properties = new Dictionary<int,string>();
        private int birthNo;
        public int BirthNo
        {
            get { return birthNo;}
            set { 
                birthNo = value;
                properties[0] = birthNo.ToString();
            }
        }
    }

当你设置属性

person.BirthNo = 1;
例如

,然后您可以使用

检索它:
string retreivedBrithNo  = person.properties[0];

这是令人难以置信的混乱,我不知道你为什么要这样做,但无论如何这是一个答案!:)