using System;
/// 装箱类。
public class Class
{
private bool _hashcode = false;
private bool _equals = false;
/// 装箱对象。
public T Value;
///
public bool IsNull
{
get { return Value == null; }
}
/// 创建默认值。
public Class(T value = default, bool tryValueEquals = true, bool tryValueHashCode = true)
{
Value = value;
_hashcode = tryValueHashCode;
_equals = tryValueEquals;
}
///
public override int GetHashCode()
{
if (_hashcode && Value != null)
{
return Value.GetHashCode();
}
return base.GetHashCode();
}
///
public override bool Equals(object obj)
{
if (_equals)
{
if (Value == null && obj == null) return true;
if (Value == null && obj != null) return false;
if (Value != null && obj == null) return false;
return Value.Equals(obj);
}
return base.Equals(obj);
}
///
public override string ToString()
{
if (Value == null) return null;
return Value.ToString();
}
}