[英]How do you store a watch value into a variable in your program?
假設我正在調試並且我有一個變量
bytes[] x = new byte[]{0x00, 0x01, 0x02}
我對這個變量執行了一些計算,現在在調試器中我可以看到我的變量 x 已經改變了。 如何復制整個變量 x 的值並將其用於以后的測試。
例如,在觀察窗口中,經過我的計算,x 現在是一個 585 字節的數組。 所以我想在我的程序中添加一個變量
bytes[] newx = new byte{All the 585 bytes here}
我知道我可以選擇每個單獨的字節,並逐個復制它以形成一個新變量,我想知道是否有更聰明的方法來做到這一點?
理想情況下,我想保存該值並在單元測試等以后的地方使用該變量,所以我真的不想為了獲得 newx 值而繼續執行計算。
序列化變量,將其從立即窗口寫入文件,例如:
File.WriteAllText(@"path",JsonConvert.SerializeObject(bytes));
然后當你需要它回來時,就像反序列化它
bytes=JsonConvert.DeserializeObject<byte[]>(File.ReadAllText(@"path"));
您可以根據需要使用其他序列化程序,對於小對象,您甚至可以只使用 Base64 並手動復制粘貼它們,在較大的對象上,二進制序列化程序可以更快/占用更少的 RAM。
雖然立即窗口可以切換過去的命令歷史記錄,但如果您經常編寫和加載,那么編寫一個專用的靜態幫助器類以從任何地方調用可能是值得的,這樣您就可以非常快速地調用,例如
Save(bytes,"whatevername");
和
bytes=Load<byte[]>("whatevername");
我真的不完全理解這個問題,但我會根據我從中得到的答案來回答,所以你的問題是如何將舊數組中的值存儲到新數組中,對嗎? 如果是這樣,那么我將使用 for 循環,但與 for 循環有關的是,您無法做任何事情來更改數組,而只能循環遍歷它,因此您必須使用列表並執行此操作”必須使用System.Collections.Generic;
將列表導入您的腳本
using System.Collections.Generic;
...
bytes[] x = new byte[]{...};
List<bytes> newx = new List<bytes>{};
for(int i=0; i<x.Length; i++){
newx.Add(x[i]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.