1。当参数为值类型时这时方法中改变参数的值是没有用的例如:
 public void method1(int i)
      {
          Console.Write(i);
          i = 100;
      }
  static void Main(string[] args)
        {
            Myclass mc = new Myclass();
            int i = 7;
            mc.method1(i);
            Console.WriteLine(i);
        }
打印出的结果为:7,7。具体实现为:int类型为值类型,当调用mc.method1(i)时i把值传给方法method1,也就是调用方法时把7传给method1的i,即输出7,当方法中i=100时,也就是令7=100;在main方法中i的值是不发生变化的。
2。当参数是值类型时在参数前加ref会把值参数的地址传给方法,这与引用类型基本是一样的例如:
  public void Method3(ref string i)
        {
            Console.WriteLine(i);
            i = "100";
        }
  static void Main(string[] args)
        {
             Myclass mc = new Myclass();
            int i = 7;
            mc.Method3(ref  i);
            Console.WriteLine(i);
        }
输出结果为7,3 具体实现为:ref把i的地址传给方法Method3当空间中i发生变化时地址空间也变化,所以方法结束后i的值也变化。
 3。out 作参数能够返回多个值。例如:
 public void Method4(out int i, out string j)
        {
            i = 100;
            j = "10";
            Console.WriteLine(i+j);
        }
  static void Main(string[] args)
        {
          MyClass mc = new MyClass();
           int i = 10;
            string j;
            mc.Method4(out i, out j);
            Console.WriteLine(i);
           Console.WriteLine(j);
         }
结构为:100 10,100,10在调用时变量不需要赋值,在方法中会把赋的值修改
4。方法中使用动态参数例如:
 public void Mehtod5(string t, params int[] arrint)
        {
            foreach (int i in arrint)
            {
                Console.WriteLine(i);
            }
       
        }
   static void Main(string[] args)
        {
            Program mc = new Program();
            int[] arrint = new int[] { 1, 2, 3 };
            mc.Mehtod5("dd", arrint);
          
        }
输出结果为:1 2 3 params使参数为数组,数组的长度是可变的
5。当方法中的参数为引用类型时,传递的是地址,例如:
  public void method1(int[]arrint)
      {
          foreach (int a in arrint)
          {
              Console.WriteLine(a);
          }
          arrint[0] = 1222;
      }
    static void Main(string[] args)
        {
            int[] arrint = { 1,2,3,4};
         
            Myclass mc = new Myclass();
            mc.method1(arrint);
            foreach (int a in arrint)
            {
                Console.WriteLine(a);
            }
        
        }
输出结果为:1,2,3,4  1222,2,3,4 地址传给方法后在方法中参数变化即地址也发生变化,再调用时就发生变化。