簡體   English   中英

如何在程序中將監視值存儲到變量中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM