使用Property从List <string> </string>获取值

时间:2011-11-19 00:02:36

标签: c#

private List<string> _S3 = new List<string>();
public string S3[int index]
{
    get
    {
        return _S3[index];
    }
}

唯一的问题是我得到13个错误。我想调用string temp = S3[0];并从列表中获取具有特定索引的字符串值。

6 个答案:

答案 0 :(得分:7)

你不能在C#中做到这一点 - 你不能在C#中拥有这样的命名索引器。你可以 拥有一个没有参数的命名属性,你可以拥有一个带参数但没有名字的索引器。

当然,你可以拥有一个名称​​返回一个带索引器的值的属性。例如,对于只读视图,您可以使用:

private readonly List<string> _S3 = new List<string>();

// You'll need to initialize this in your constructor, as
// _S3View = new ReadOnlyCollection<string>(_S3);
private readonly ReadOnlyCollection<string> _S3View;

// TODO: Document that this is read-only, and the circumstances under
// which the underlying collection will change
public IList<string> S3
{
    get { return _S3View; }
}

这样,从公共角度来看,底层集合仍然是只读的,但您可以使用以下命令访问元素:

string name = foo.S3[10];

可以在每次访问ReadOnlyCollection<string>时创建一个新的S3,但这似乎有点无意义。

答案 1 :(得分:2)

C#不能拥有其属性的参数。 (旁注:VB.Net可以。)

您可以尝试使用功能:

public string GetS3Value(int index) {
  return _S3[index];
}

答案 2 :(得分:1)

你必须使用这种表示法

 public class Foo
    {
        public int this[int index]
        {
            get
            {
                return 0;
            }
            set
            {
                // use index and value to set the value somewhere.   
            }
        }
    }

答案 3 :(得分:0)

_S3 [i]应该自动返回位置i

的字符串

所以就这样做:

string temp = _S3[0];

答案 4 :(得分:-1)

试试这个

private List<string> _S3 = new List<string>();
public List<string> S3
{
    get
    {
        return _S3;
    }
}

答案 5 :(得分:-1)

我会选择

class S3: List<string>{}