我希望有我的班點兩個值類型的成員相同的內存地址,從而使初始化一個會初始化其他的和不斷變化的人會改變對方。或者,它可以是一個函數內的兩個變量,或者一種將變量或常量值轉換爲不同類型的方法。有兩類成員指向同一個內存地址
爲什麼有人會想要這個的最簡單的例子是經典的0x5F3759DF fast inverse square root,其中浮點值被重讀爲int,被操縱並重新讀回到float。
我很清楚地記得讀一篇博客文章證實這一點,但我似乎無法立刻找到它。如果內存服務,設置類似於此:
class Dummy
{
// Make these two point to the same memory address, and initializing one would initialize the other
Int64 a;
Double b;
}
或者也許這兩個變量是在一個函數的開始。無論哪種方式,我真的記得,初始化一個會自動初始化另一個,並使用「未初始化」一個將無誤地工作。也許他們甚至是同一類型而不是兩種不同的類型。
FWIW,我不是目前正在努力做到這一點,而是想知道關於C#的能力做這樣的事情。
雖然你可以明確的字段偏移做到這一點,雙打它更容易明確地通過'BitConverter.DoubleToInt64Bits'和[in C#C++聯盟]其反向 – harold
可能的複製(https://stackoverflow.com/questions轉換/ 126781/c-union-in-c-sharp) – pvg
使用屬性而不是字段:Int64 A {set;得到;} – sTrenat