2011-09-19 92 views
5

我已经在用户控件定义如下结构:如何将数据项添加到列表<Struct>

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>(); 
+0

为什么你在第一个地方使用结构? – vcsjones

+0

那是一个可变的吗? –

+4

***真的看起来不像它应该是一个结构......我不认为结构意味着你*认为*它的意思。 –

回答

8

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

另外,使其成为不变结构,并在创建点正确的值初始化它 - 那么问题是没有实际意义,无论多少次随后复制。

IMO第一个是正确的方法在这里。

1

,所以你需要这样做:

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

,并从其他类通过调用此方法已创建和初始化columnData对象。

15

此:

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

创建一个新的列表。

此:

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

创建一个新的列表,一个新的结构,并增加了一个项目列表。

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

正在创建保存结构而不是结构本身的列表。

你可以在这里使用结构,因为性能方面的原因(比类更快)。

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

DataItems.Add(data);