什么是System.Object ???参考类型或值类型

时间:2016-06-08 02:02:12

标签: c#

根据我的书本知识,我了解到System.object是引用类型。 我尝试过以下事情来理解同样的事情: 1.我在main方法中编写了以下代码:

Object KC = 12;
Get data(12); // method where I'm passing variable kj.
//I'm performing some manipulation in method for kj & value sets as 15. 
Console.WriteLine(kj); // Expected output is 15 . 

考虑kj是对象和引用类型。但我得到输出为12 .......

有人能解释一下上述情况。

1 个答案:

答案 0 :(得分:1)

在C#中,引用类型不会通过引用默认传递。它们是按值传递的,即使是参考类型也是如此。但是,引用类型的值可以简单地显示为指针。

您实际传递的是指针的副本。对该副本的任何修改都更改原始引用。

void Main()
{
    Object kj = 12;

    GetData(kj); 
    Console.WriteLine(kj); //Prints 12
}

void GetData(Object o)
{
    //At this point, o is a pointer to the object 'kj'
    o = 15;

    //Now o is a pointer to a _new_ object which boxes the value 15.
}

要获得您所需的功能,您需要通过引用显式传递它:

void Main()
{
    Object kj = 12;

    GetData(ref kj); 
    Console.WriteLine(kj); //Prints 15
}

void GetData(ref Object o)
{
    o = 15;
}

现在我们实际上是通过引用传递的,因此对o 所做的任何更改都会影响原始引用。