C#工具类(二):对各数据类型Null值的封装
作者:陆金龙
发表时间:2015-05-12 01:01
将各数据类型在未赋值情况下使用的默认值,统一封装到一个Null类中。
////// NULL /// public class Null { public static short NullShort { get { return -1; } } public static int NullInteger { get { return -1; } } public static byte NullByte { get { return 255; } } public static float NullSingle { get { return float.MinValue; } } public static double NullDouble { get { return double.MinValue; } } public static decimal NullDecimal { get { return decimal.MinValue; } } public static DateTime NullDate { get { return DateTime.MinValue; } } public static string NullString { get { return string.Empty; } } public static bool NullBoolean { get { return false; } } public static Guid NullGuid { get { return Guid.Empty; } } public static object SetNull(PropertyInfo objPropertyInfo) { object returnValue = null; switch (objPropertyInfo.PropertyType.ToString()) { case "System.Int16": returnValue = NullShort; break; case "System.Int32": case "System.Int64": returnValue = NullInteger; break; case "system.Byte": returnValue = NullByte; break; case "System.Single": returnValue = NullSingle; break; case "System.Double": returnValue = NullDouble; break; case "System.Decimal": returnValue = NullDecimal; break; case "System.DateTime": returnValue = NullDate; break; case "System.String": case "System.Char": returnValue = NullString; break; case "System.Boolean": returnValue = NullBoolean; break; case "System.Guid": returnValue = NullGuid; break; default: //Enumerations default to the first entry Type pType = objPropertyInfo.PropertyType; if (pType.BaseType.Equals(typeof(Enum))) { Array objEnumValues = Enum.GetValues(pType); Array.Sort(objEnumValues); returnValue = Enum.ToObject(pType, objEnumValues.GetValue(0)); } else //complex object { returnValue = null; } break; } return returnValue; } public static bool IsNull(object objField) { bool isNull = false; if (objField != null) { if (objField is int) { isNull = objField.Equals(NullInteger); } else if (objField is short) { isNull = objField.Equals(NullShort); } else if (objField is byte) { isNull = objField.Equals(NullByte); } else if (objField is float) { isNull = objField.Equals(NullSingle); } else if (objField is double) { isNull = objField.Equals(NullDouble); } else if (objField is decimal) { isNull = objField.Equals(NullDecimal); } else if (objField is DateTime) { var objDate = (DateTime)objField; isNull = objDate.Date.Equals(NullDate.Date); } else if (objField is string) { isNull = objField.Equals(NullString); } else if (objField is bool) { isNull = objField.Equals(NullBoolean); } else if (objField is Guid) { isNull = objField.Equals(NullGuid); } else //complex object { isNull = false; } } else { isNull = true; } return isNull; } }