我在用户控件中定义了以下结构:
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 :(得分: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);