我在C#代码中初始化了以下数组。 data1,data2,data3在代码中手动写入,以将其分配给' row'如下图所示。
string[] row = new string[] { type, data1, data2, data3, shares };
我想动态分配,而不是手动编码。为了确保这一点,我从UI获取变量的值并将其分配给这样的C#变量。
var change_data = "data1, data2"
例如,我应该能够更改变量' row'如下:
string[] row = new string[] { type, data1, data2, shares };
现在是另一个例子。
var change_data = "data1";
这也应该如下更新行。
string[] row = new string[] { type, data1, shares };
答案 0 :(得分:1)
您不想使用变量'将名称命名为字符串。相反,你可以使用字典:
// setup
var fields = new Dictionary<string,string>() {
{"data1", "data 1 value"},
{"data2", "data 2 value"},
{"data3", "data 3 value"},
};
// get data from UI
var change_data = "data1, data2";
var change_names = change_data.Split(',').Select(t=>t.Trim());
// or just this, if you can get it from your UI:
// var change_names = new [] {"data1", "data2"};
// build new row based on change_names
var row = new List<string>();
row.Add(type);
row.AddRange(change_names.Select(t=>fields[t]));
row.Add(shared);
答案 1 :(得分:1)
正如评论中所提到的,由于数组具有固定长度,因此使用某种集合会更好。 Blorgbeard
的回答使用Dictionary<K,V>
- 另一种方法是使用List<T>
。
你可以做的是将一个List包装在一个方法中,用你的第一个值开始你的列表,插入输入值,并添加最终值:
假设下面input
的值为data1, data2
:
public static List<string> CreateRowData(string input) {
var returnList = new List<string> { "type" };
var inputs = input.Split(',').Select(s => s.Trim());
foreach (var item in inputs) {
returnList.Add(item);
}
returnList.Add("shares");
return returnList;
}
上述转变:
//type
//data1
//data2
//shares