为什么这样:
public class BoolClass
{
public bool Value { get; set; }
}
class Program
{
static void Main(string[] args)
{
BoolClass bc1 = new BoolClass { Value = false };
BoolClass bc2 = bc1;
bc1.Value = true;
}
}
Run Code Online (Sandbox Code Playgroud)
造成
bc2.Value == true
Run Code Online (Sandbox Code Playgroud)
作为bool一种我预期的值类型,bc2.Value == false除非bc2.Value将其装箱并存储在堆上.
我在Stack Overflow上找到了这个方法来判断该值是否已装箱
public static bool IsBoxed<T>(T value)
{
return
(typeof(T).IsInterface || typeof(T) == typeof(object)) &&
value != null &&
value.GetType().IsValueType;
}
Run Code Online (Sandbox Code Playgroud)
但它表示它没有盒装.我现在有些困惑,有人可以向我解释一下吗?