我怎樣才能每個元素存儲在一個字符串數組Joe, Ben, Carl
成獨立的變量,使得GuestA
是喬,GuestB
是本,並且GuestC
是卡爾不使用字典? (請注意,變量按字母順序排列)C#:生成用於在陣列中的每個值單獨的變量
回答
假設你有GuestA
,GuestB
和GuestC
已經宣佈,你會使用反射這樣的:
private string GuestA;
private string GuestB;
private string GuestC;
private void button1_Click(object sender, EventArgs e)
{
string variableName;
string[] values = {"Joe", "Ben", "Carl" };
for(int i = 0; i < values.Length; i++)
{
variableName = "Guest" + Convert.ToChar(65 + i).ToString();
System.Reflection.FieldInfo fi = this.GetType().GetField(variableName, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
if (fi != null)
{
fi.SetValue(this, values[i]);
}
}
}
雖然我懷疑這是不是因爲你所用的你有什麼比較在您的標題中使用「生成」字樣。
我覺得你已經夠接近了。如果有人想知道,我想爲每個數組元素生成單獨的變量,因爲我試圖創建一個機器學習API,它會爲用戶想要添加的每個隱藏層生成一個變量。我希望這會消除混亂。 – ComputersAreCool
不確定爲什麼要這樣做,但是如果從字面上理解,此代碼將回答您的問題。
string[] list = new string[] {"Joe","Ben","Carl"};
string GuestA = list[0];
string GuestB = list[1];
string GuestC = list[2];
東西告訴我有一些額外的要求,你有麻煩闡明。
我認爲OP的意思是動態地做到這一點。例如。生成26個名爲'GuestA'到'GuestZ'的變量。但是,我不確定會有什麼可能的原因。 –
你不能使用像引用類型這樣的字符串,但是你可以通過運算符重載來模擬引用行爲,但是在這種情況下出現一個大問題:無法重載賦值運算符,在代碼下面繞過類屬性風格。但我認爲你可以嘗試像Guest guestD = tempGuest = "Joe Ho";
這樣的雙重任務(不確定這一點)。
public class ReferencedStringExample
{
public void Wrong()
{
string GuestA = "Joe",
GuestB = "Ben",
GuestC = "Carl";
var array = new string[]
{
GuestA,
GuestB,
GuestC
};
GuestA = "Joe Ho";
Debug.Assert(GuestA == array[0]);
}
public void Right()
{
Guest GuestA = "Joe",
GuestB = "Ben",
GuestC = "Carl";
var array = new Guest[]
{
GuestA,
GuestB,
GuestC
};
GuestA.Val("Joe Ho");
Debug.Assert(GuestA == array[0]);
Debug.Assert(GuestA == "Joe Ho");
GuestA = "Joe Ho";
Debug.Assert(GuestA != array[0]);
Debug.Assert(GuestA == "Joe Ho");
}
public class Guest
{
string value;
public static implicit operator string(Guest g)
{
return g.value;
}
public static implicit operator Guest(string s)
{
return new Guest() { value = s };
}
public Guest Val(string s)
{
this.value = s;
return this;
}
public override bool Equals(object obj)
{
Guest guest = obj as Guest;
return guest.value == this.value;
}
public override int GetHashCode()
{
return (value ?? string.Empty).GetHashCode();
}
}
}
- 1. 和單獨的陣列的每個值存儲在C++
- 2. 如何生成基於一個子陣列值在紅寶石陣列的單獨的陣列
- 3. 劈裂陣列成單獨的陣列
- 4. 拆分用冒號成單獨的列的每個值
- 5. 爲每一個總值到單獨的變量R和在HTML
- 6. 打印陣列陣列,每個內部在單獨一行
- 7. PHP的foreach:在單獨的變量中的每個環節
- 8. ggplot 2:每列生成一個單獨的盒圖
- 9. 單獨陣列中的子陣列在C#
- 10. 在詞典列表中爲每個循環定義2個單獨的變量
- 11. 爲陣列中的每個ID運行單獨的查詢
- 12. 如何在連接中將每一個MySQL表分割成單獨的變量
- 13. 使用對應於單獨矩陣的值創建矢量
- 14. 如何在Excel中的三個單獨列中生成日期?
- 15. GROUP BY將每個組成員放在單獨的列中
- 16. 爲列表中的每個元素創建一個單獨的變量
- 17. 內置用於生成圖的陣列?
- 18. 存儲從陣列中的兩個獨立的值到C++中的單個陣列索引
- 19. 從python中的幾個變量生成獨特的文件名
- 20. 與陣列的每個值
- 21. 陣列值在同一個變量
- 22. 如何單獨保留每個觀察值的變量的最小值?
- 23. 對於列表中的每個成員,將其寫入單獨的文件,python
- 24. 寫每個data.table列單獨的R中
- 25. python字典到csv,其中每個鍵位於單獨的列中的單獨的行和值
- 26. 從幾個哈希生成每個單獨的組合
- 27. 多個矩陣中大於每列平均值的值總和
- 28. PHP - 在陣列中的第70個變量後發生丟失
- 29. 陣列輸出用於單個值
- 30. 矩陣中不同數量的列,分析方程中使用每個單獨列的方法?
如果你談論動態做這件事,你爲什麼需要這樣做? –
[創建動態變量名稱]的可能重複(http://stackoverflow.com/questions/20857773/create-dynamic-variable-name) –
假設John Wu的答案不是你要找的,而你想要自動創建變量,對使用字典有什麼益處?即使你可以創建它們,你將如何訪問這樣的變量? – john