1

.NET アセンブリがビルドされた時刻を取得するためのコードを次に示します。次の行に注意してください。

int secondsSince1970 = System.BitConverter.ToInt32(b, i + c_LinkerTimestampOffset);

このコードは、アセンブリ内に格納されている構造体のTimeDateStampメンバーを抽出します。IMAGE_FILE_HEADER構造は次のように定義されます。

typedef struct _IMAGE_FILE_HEADER {
  WORD  Machine;
  WORD  NumberOfSections;
  DWORD TimeDateStamp;
  DWORD PointerToSymbolTable;
  DWORD NumberOfSymbols;
  WORD  SizeOfOptionalHeader;
  WORD  Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

次のようにDWORD定義されます。

typedef unsigned long DWORD;

構造体の説明にはTimeDateStamp、過去の任意の瞬間からの秒数であると記載されているため、負になることはありません。

intC# コードが符号付きの型を使用してその符号なしの値を格納するのはなぜですか?

4

1 に答える 1

0

これは、unsigned int が CLS 準拠の変数型ではなく、すべての .NET ライブラリが共通言語仕様に従う必要があるためです。

CLS コンプライアンスの詳細:
http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx

于 2012-09-28T12:20:59.640 に答える