using System;namespace helloworld
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
int x = 1;
object y = x;
              Console.WriteLine("this is {0}",y);
f(y);
Console.WriteLine("this is {0}",y);
}
static void f(object y) {
   y = 3;
}
}
}
发现y的值在调用前后没有变化,觉得很纳闷,object不是引用类型吗,怎么会没有变化呢?
还有我想知道,int类型装箱和取消装箱的过程具体是怎么实现的,内存是怎么样安排的?

解决方案 »

  1.   

    不行啦,除非改成:
    static void f(out object y) {
       y = 3;
    }
      

  2.   

    復雜類型才是引用,像int,float等這種簡單變量,C#還是按傳值來對待的。
      

  3.   

    int继承valuetype,valuetype继承object
      

  4.   

    值类型和引用类型都从object继承
      

  5.   

    我想楼主是误会C#中引用类型在作为函数参数时的调用方法了,这里的调用和C中的指针或引用不是一个概念,并不是直接更改托管内存中的数据,要返回,需要使用ref或者out。