C#方括号用于使用字符串访问对象

C#方括号用于使用字符串访问对象,c#,.net,C#,.net,我不明白这个方括号,我必须创建的东西,这个代码行正在工作,只是为了测试 filetype = dataBandREP["VRZ.Parent.SIGNATUR"].ToString(); 方括号表示您正在引用一个集合,在该集合中,您需要“VRZ.Parent.signature”[]是以字符串作为参数的索引器。此代码: filetype=dataBandREP[“VRZ.Parent.signature”].ToString() 使用某种集合的索引器,引用对象,然后将其转换为字

我不明白这个方括号,我必须创建的东西,这个代码行正在工作,只是为了测试

        filetype = dataBandREP["VRZ.Parent.SIGNATUR"].ToString();

方括号表示您正在引用一个集合,在该集合中,您需要“VRZ.Parent.signature”<代码>[]是以字符串作为参数的索引器。

此代码:
filetype=dataBandREP[“VRZ.Parent.signature”].ToString()
使用某种集合的索引器,引用对象,然后将其转换为字符串格式以填充filetype变量

这在数组和
DataColumn
集合中非常常见。字符串索引器允许您基于(例如)列标题获取值,而不需要知道
DataTable.Columns
集合中与该列关联的整数索引

调试时会出现不同的行为,因为
“VRZ.Parent.signature”
作为字符串索引器的有效性已更改,可能是因为实际数据源的更改。这是假设您得到的是空引用或类似引用。如果不知道你会遇到什么样的例外情况,我们就无能为力了

C#可以重载运算符,包括方括号

public class Example
{
    public string this[string s] // square bracket operator with string argument
    {
        get 
        {
            return somethingToReturnString;
        }
        set
        {
            somethingToSetString = value;
        }
    }

    public string this[int i] // square bracket operator with int argument
    {
        get 
        {
            return somethingToReturnInt;
        }
        set
        {
            somethingToSetInt = value;
        }
    }
}

下面的语法也适用。。我的类是从某种类型的ReadOnlyDictionary“AttributeValue”派生的,它导出双值。当出现错误时,它会给用户一个错误框 找不到该值

public abstract class AttribDoubleReader: IReadOnlyDictionary<string, AttributeValue>
{
 public double this[string key] => GetValue(key);

 private double GetValue(string key)
 {
    if (TryGetValue(key, out AttributeValue value))
    {
        return value.AsDouble();
    }
    else
    {
        MessageBox.Show("ERROR: KEY "+ key + " NOT FOUND.");
        throw new KeyNotFoundException();
    }

 }
}
公共抽象类AttribDoubleReader:IReadOnlyDictionary
{
public double this[string key]=>GetValue(key);
私有双GetValue(字符串键)
{
if(TryGetValue(键,out属性值))
{
返回值.AsDouble();
}
其他的
{
MessageBox.Show(“错误:KEY”+KEY+“未找到”);
抛出新的KeyNotFoundException();
}
}
}

[…]
是带有
字符串的索引器。。。