コード例 #1
0
ファイル: MarshalType.cs プロジェクト: nt153133/MemoryLib
        static MarshalType()
        {
            IsIntPtr = typeof(T) == typeof(IntPtr);
            RealType = typeof(T);
            if (RealType.IsEnum)
            {
                RealType = RealType.GetEnumUnderlyingType();
            }
            TypeCode = Type.GetTypeCode(RealType);
            Size     = TypeCode == TypeCode.Boolean ? 1 : Marshal.SizeOf(RealType);

            CanBeStoredInRegisters =
                IsIntPtr ||
                TypeCode == TypeCode.Boolean ||
                TypeCode == TypeCode.Byte ||
                TypeCode == TypeCode.Char ||
                TypeCode == TypeCode.Int16 ||
                TypeCode == TypeCode.Int32 ||
                TypeCode == TypeCode.Int64 ||
                TypeCode == TypeCode.Single ||
                TypeCode == TypeCode.UInt16 ||
                TypeCode == TypeCode.UInt32 ||
                TypeCode == TypeCode.UInt64 ||
                TypeCode == TypeCode.SByte;
        }