C#:unsafeでboolにintを入れてみる
C#界隈で非常に有名なお方が「unsafeとかリフレクションでboolにtrue, false以外の値が入れられる」といった旨を呟かれていたのを拝見しました。 「unsafeでならintは入るかも」と思い、恐縮ながら試してみました。
class Program { static void Main(string[] args) { Console.WriteLine(IntToBool(0)); Console.WriteLine(IntToBool(5)); Console.ReadKey(); } unsafe static bool IntToBool(int _int) { int* intptr = &_int; bool* boolptr = (bool*)intptr; return *boolptr; } }
結果(実際はコンソールに表示されます)
False
True
少し試した程度ですが、0はFalse、0以外はTrueで扱われる模様です。