小编Ges*_*ess的帖子

为什么值类型在引用类型的属性时就像引用类型一样?

为什么这样:

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)

但它表示它没有盒装.我现在有些困惑,有人可以向我解释一下吗?

.net c#

4
推荐指数
1
解决办法
429
查看次数

标签 统计

.net ×1

c# ×1