根据我的书本知识,我了解到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 .......
有人能解释一下上述情况。
答案 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
所做的任何更改都会影响原始引用。