using System;public class class1
{
    public static void Main()
    {
            object y = 22;
            Add1(y);
            Console.WriteLine(y);
    }    public static void Add1(object o)
    {
        o = 1;        
    }
}
--------------------------------
请问输出是多少呀?为什么?

解决方案 »

  1.   

    Console.WriteLine(y);输出的值与Add1(y);没有关系,public static void Add1(object o)未设置返回值,所以即使要使用它,也是可能出错的,没什么实际的意义.
      

  2.   

    public static void Main(string[] args)
            {
               //这里实际上已经隐式转换成int了,在监视窗口中查看y的类型是 object {int}
                object y = 22;
                 Add1(y);//所以这里传得是值
                Console.WriteLine(y);
            }
            public static void Add1(object o)
            {
                o = 1;
            }
      

  3.   

    它们不是引用传递吗?
    所以我的看法是,在Add1()函数中的改变,就等于对y进行了改变.输出应该是1呀?
      

  4.   

    class X
            {
                public int x;
            }        public static void Main(string[] args)
            {
                X x = new X();
                x.x = 22;            object y = x; //因为x是class类型
                Add1(y);//这里传址
                Console.WriteLine(x.x);//输出 1
            }
            public static void Add1(object o)
            {
                ((X)o).x = 1;
            }
      

  5.   

    基本数据类型如 int、char、struct 都是传值的,传递参数时是以实际数据类型为准,所以才有上面的现象,当参数是基本数据类型是传值,否则传址。