Data Types C#

using System;
using System.Text;
using System.Runtime.InteropServices;
namespace xPlatform
{
    public static class Utilities
    {
        public static unsafe int NativeSizeOf(Type targetType)
        {
            if (targetType == null)
                throw new ArgumentNullException("targetType");
            string targetTypeName = targetType.FullName;
            switch (targetTypeName)
            {
                case "System.Char":
                    return sizeof(char);
                case "System.Boolean":
                    return sizeof(bool);
                case "System.Byte":
                    return sizeof(byte);
                case "System.DateTime":
                    return sizeof(DateTime);
                case "System.Decimal":
                    return sizeof(decimal);
                case "System.Double":
                    return sizeof(double);
                case "System.Guid":
                    return sizeof(Guid);
                case "System.Int16":
                    return sizeof(short);
                case "System.Int32":
                    return sizeof(int);
                case "System.Int64":
                    return sizeof(long);
                case "System.IntPtr":
                    return sizeof(IntPtr);
                case "System.SByte":
                    return sizeof(sbyte);
                case "System.Single":
                    return sizeof(float);
                case "System.TimeSpan":
                    return sizeof(TimeSpan);
                case "System.UInt16":
                    return sizeof(ushort);
                case "System.UInt32":
                    return sizeof(uint);
                case "System.UInt64":
                    return sizeof(ulong);
                case "System.UIntPtr":
                    return sizeof(UIntPtr);
                default:
                    return Marshal.SizeOf(targetType);
            }
        }
        public static byte GetHighByte(int word)
        {
            return (byte)((uint)word >> 8);
        }
        public static byte GetLowByte(int word)
        {
            return (byte)((uint)word & 0xff);
        }
        public static int GetHighWord(long doubleWord)
        {
            return (ushort)((uint)doubleWord >> 16);
        }
        public static int GetLowWord(long doubleWord)
        {
            return (ushort)((uint)doubleWord & 0xffff);
        }
        public static int MakeWord(byte lowByte, byte highByte)
        {
            return (ushort)((byte)lowByte | (ushort)((byte)highByte) << 8);
        }
        public static long MakeLong(int lowWord, int highWord)
        {
            return (long)((ushort)lowWord | (uint)(ushort)highWord << 16);
        }
    }
}