[英]How to assign a variable name to each index of an array?
public string[] TestResults = new string[8];
我想將上面數組的每個項目分配給一個變量。 例如,
TestName = TestResults[0];
我收到消息:當我執行以下操作時,字段初始值設定項無法引用非 static 字段、方法或屬性:
public string TestName = TestResults[0];
請建議我如何解決這個問題。
基本上,您不能在變量初始化程序中執行此操作……盡管無論如何該值都是 null 。 您不能在變量初始化程序中引用this
,因此您必須編寫:
public class Foo
{
// I hope your fields aren't really public...
public string[] TestResults = new string[8];
public string TestName;
public Foo()
{
TestName = TestResults[0];
}
}
請注意,無論如何這只會在構造時檢索值。 它不會將變量本身與數組中的第一個元素相關聯; 任何一個都可以改變而不影響另一個。 如果您希望TestName
始終與TestResults[0]
相關聯,您可能希望使用屬性:
public class Foo
{
// I hope your fields aren't really public...
public string[] TestResults = new string[8];
public string TestName
{
get { return TestResults[0]; }
set { TestResults[0] = value; }
}
}
您似乎假設,如果您的代碼有效,則TestName
成為TestResults[0]
的別名,這樣讀取或寫入該變量也會更改數組。 不是這種情況。
您可以做的是為此使用屬性:
public string[] TestResults;
public MyClass()
{
TestResults = new string[8];
}
public string TestName
{
get { return TestResults[0]; }
set { TestResults[0] = value; }
}
如果您正在尋找數組索引的同義詞,您可以使用以下內容:
public string TestName
{
get { return TestResults[0]; }
set { TestResults[0] = value; }
}
這將創建一組稱為屬性的方法,這些方法以類似於變量的語法調用。 如果您不想在外部進行寫訪問,則可以刪除set
部分。
如果您想要一個變量的副本,您將需要在其他某個點寫入它,例如在構造函數中。
發生這種情況是因為
public string TestName = TestResults[0];
將 TestName 設置為存儲在 TestResults[0] 中的相同字符串實例。 換句話說,TestName 將是對存儲在 TestResults[0] 中的 object 的引用,而不是對作為 TestResults[0] 的 memory 地址的引用。
根據您的代碼的設置方式,我將只使用屬性及其吸氣劑:
public string TestName
{
get { return TestResults[0]; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.