This question already has answers here:
How do ValueTypes derive from Object (ReferenceType) and still be ValueTypes?
                                
                                    (6个答案)
                                
                        
                                6年前关闭。
            
                    
在C#中,类型被称为值类型和引用类型



如果System.Object是最高级的类,那么是否意味着所有对象都是对象?

如果它是真的...那么这些问题随之而来

1.因此所有类型都必须是引用类型,因为我们不能直接将值分配给对象.....

2。

    int a=20; //this is primitive type or object ???
    int a = new int(); //according to documentation this is reference type ...


这两个语句有何不同...在第一个语句中,new关键字是否会自动调用?

请解释一下这张图,这让我很困惑……从msdn无法理解。

最佳答案

值类型存在两种“味道”:纯值类型和装箱值类型。装箱值类型是不可变的引用对象。即使这两个具有不同的“物理”性质,它们的逻辑C#类型也是相同的。即装箱的int类型为int。这不同于Java,在Java中存在与相关但截然不同的类型有关的逻辑值整数类型和逻辑引用整数类型。

为了使此工作有效,C#具有自动装箱机制。

object  o = 5; // Automatically boxes the integer number 5;


拆箱必须明确指定:

int i = (int)o;

关于c# - C#类型如何工作? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17011740/

10-13 07:54
查看更多