首页 > 解决方案 > 动态对象引用 C#

问题描述

我创建了一个 Mydata 方法来从列表 (listData) 中分配新数据。但是我这样做的方式不是动态的,我使用 if else 语句来确定要添加多少数据以及它属于哪个属性。有没有办法在不使用 if else 语句的情况下简化它或使其动态化。

public List<Data> _newData = new List<Data>();

public void Mydata(int number, List<string> listData) {
             if (number == 1) {
              _newData.Add(new Data() {
                       variable0 = listData[0].ToString(),
                 });
             } 
             else if (number == 2) {
             _newData.Add(new Data() {
                       variable0 = listData[0].ToString(),
                       variable1 = listData[1].ToString(),
                 });    
               }
             else if (number == 3) {
             _newData.Add(new Data() {
                       variable0 = listData[0].ToString(),
                       variable1 = listData[1].ToString(),
                       variable2 = listData[2].ToString(),
                 });    
               } 


class Data
{
  public string variable1 { get; set; }
  public string variable2 { get; set; }
  public string variable3 { get; set; }
  public string variable4 { get; set; }
  ..
  public string variable10 { get; set; }
}

标签: c#listproperties

解决方案


假设您想保持数据结构的原样(不推荐 - 请参阅注释),明显的代码简化将是:

var d = new Data
{
    variable0 = listData[0];
};
if (number >= 1) d.variable1 = listData[1];
if (number >= 2) d.variable2 = listData[2];
if (number >= 3) d.variable3 = listData[3];
_newData.Add(d);

推荐阅读