2015-01-04 77 views
-4
// 
string productName; 
byte& local1 = (byte&) productName; 
// 

這是什麼字節&? 我真的不明白。我從我的朋友那裏得到了代碼,但我不明白這一行想告訴的是什麼?因爲它會在我的VS2012中出現錯誤或紅線。誰能解釋一下?字節和平均值是什麼?

+6

這不是有效的C# – 2015-01-04 12:25:50

回答

0

這是無效的。最接近的語法是字節? - 它增加了對字節的空支持。

+1

我會說'最近的語法是'byte * local1 =(byte *)&productName'在'unsafe'範圍內。可讀空間甚至不接近與該語法相關的任何內容 – Jcl 2015-01-04 12:52:13

+1

它們同樣緊密,兩者都是一種類型,後跟一個標點符號。我沒有推斷功能上的親密。沒有辦法知道原始語法的意圖是什麼 - 您提出了一個很好的替代建議並查看它,確實在功能上更有意義。 – kidshaw 2015-01-04 12:56:38

+0

我知道......我的意思並不一樣(它會創建一個「字節指針」,而不是「字節引用」),但這就是大多數反編譯器從IL轉換那種功能的方式。通常使它看起來像C++指針和VB.Net的「名稱和」語法的混合。但是你是對的:因爲它是無效的C#,所以只能在這裏猜測。 – Jcl 2015-01-04 13:00:07

1

它使local1成爲一個引用字節類型,但這可能來自一些IL反編譯和無效的C#語法。如果使用參數ref string反編譯IL函數,那麼結果代碼將更有可能發生。

您無法使用C#編譯器編譯該代碼。在IL中有很多是合法的,但沒有C#等價的語法,通常是它被反編譯回來的方式(這並不能使其編譯),盡力使它看起來像C#

+0

感謝您的詳細解答,因爲這將幫助我理解代碼。 – 2015-01-04 12:57:10