如何将数据项添加到List <struct> </struct>

时间:2011-09-19 11:48:23

标签: c# asp.net

我在用户控件中定义了以下结构:

public struct ColumnData
{
    public string ColumnName { get; set; }
    public string ColumnDataItem { get; set; }
    public bool ColumnIsHyperLink { get; set; }
    public string ColumnHyperLinkURL { get; set; }
    public string ColumnHyperLinkPK { get; set; }
}

我创建了一个List<ColumnData>的新实例(在后面创建用户控件实例的不同代码中)并希望将值传递给它,但是如何将它们分配给struct中的特定属性对象

我使用以下代码创建结构的实例:

List<ColumnData> DataItems = new List<ColumnData>();

4 个答案:

答案 0 :(得分:17)

此:

List<ColumnData> DataItems = new List<ColumnData>();

创建一个新列表。

此:

List<ColumnData> DataItems = new List<ColumnData>();
var cd = new ColumnData();
cd.ColumnName = "Taco";
DataItems.Add(cd);

创建一个新列表,一个新结构,并将一个项添加到列表中。

答案 1 :(得分:9)

将其改为班级;所有与修改结构属性(等)有关的问题都将消失。

或者,将其设为 不可变的 结构,并在创建时使用正确的值对其进行初始化 - 然后问题没有实际意义,无论它多少次随后被复制。

IMO第一个是正确的方法。

答案 2 :(得分:1)

所以你需要这样做:

public void AddToList(ColumnData columnData)
{
  DataItems.Add(columnData);
}

并从另一个类中调用此方法,传递已创建和初始化的columnData对象。

答案 3 :(得分:1)

List<ColumnData> DataItems = new List<ColumnData>();

创建包含结构的列表而不是结构本身。

出于性能原因,你可以在这里使用结构(比类快)。

 ColumnData data = new ColumnData
{
 ColumnName  = "Blaa"
};

DataItems.Add(data);