在通過調試步驟時,Visual Studio 2013顯示BitConverter.IsLittleEndian
是:的Visual Studio 2013快速監視(靜態屬性)
- 錯誤:當我將鼠標懸停在
BitConverter
鼠標和看到的BitConverter.IsLittleEndian
價值和 - 真:當我把它放在一個變量一樣
var x = BitConverter.IsLittleEndian;
我認爲BitConverter.IsLittleEndian
應該已經被評估,因爲我已經在BitConverter
稱爲GetBytes
所以公司的S應該在這個時候調用tatic構造函數,對吧?我錯過了什麼?
我的代碼是這樣(我想生成順序Guid
; rest
是long
計數器的字節 - 在這個版本):
static Guid Id(long ticks, byte[] rest)
{
var ticksBytes = BitConverter.GetBytes(ticks).PolishEndian();
// var x = BitConverter.IsLittleEndian; // <- TESTED HERE
int a = BitConverter.ToInt32(new byte[] { ticksBytes[4], ticksBytes[5], ticksBytes[6], ticksBytes[7] }.PolishEndian(), 0);
short b = BitConverter.ToInt16(new byte[] { ticksBytes[2], ticksBytes[3] }.PolishEndian(), 0);
short c = BitConverter.ToInt16(new byte[] { ticksBytes[0], ticksBytes[1] }.PolishEndian(), 0);
return new Guid(a, b, c, rest.PolishEndian(true).ToArray());
}
static byte[] PolishEndian(this byte[] ba, bool reverse = false)
{
var flag = reverse ? BitConverter.IsLittleEndian : !BitConverter.IsLittleEndian;
if (flag) return ba.Reverse().ToArray();
return ba;
}
注意在這種情況下,你正在查看一個靜態字段,而不是一個靜態屬性,它會改變一些事情。 – JaredPar