使用foreach循环访问结构列表中的字段

时间:2015-10-11 11:08:29

标签: c# list loops

对于任何绊倒这个问题的人。不幸的是,在我有机会使用错误消息进行修改之前,它被过度热心的评论员拒绝了。问题仍然存在,答案也是如此。

我有这样的结构

public struct note{

    public note (double SampleTime, string Label)
    {
        sampleTime = (float)SampleTime;
        label = Label;
    }
    float sampleTime;
    string label;
}

我已经宣布了一个由新笔记结构组成的列表

public List<note> notesList;

在其他一些方法中初始化它然后添加数据

notesList = new List<note>();
notesList.Add(new note(Convert.ToDouble(seperatefields[0]),seperatefields[1]));

然后我想创建一个foreach循环并读出列表中的内容

    foreach(note n in notesList){

        Debug.Log (n.sampleTime);
    }

然而,这不会奏效。

  

`rhythmGameUtilityReadFile.note.sampleTime&#39;由于其保护级别而无法访问

由于

吉姆

3 个答案:

答案 0 :(得分:2)

C#中的默认访问修饰符为private。您的struct只有私人字段,因此您无法访问它们。添加公共属性以获取值:

public struct Note
{
    float sampleTime;
    string label;

    public Note(double SampleTime, string Label)
    {
        sampleTime = (float)SampleTime;
        label = Label;
    }

    public float SampleTime { get { return sampleTime; } }
    public string Label { get { return label; } }
}

答案 1 :(得分:1)

因为你的struct中没有任何公共字段。

答案 2 :(得分:0)

它不起作用,因为该字段无法访问。

将其公之于众,并将其作为财产。

public struct note
{
    public note (double sampleTime, string label)
    {
        SampleTime = (float)sampleTime;
        Label = label;
    }

    public float SampleTime { get; private set; }
    public string Label { get; private set; }
}