C#锐利体验(6.1)

C#锐利体验(6.1)


作者: 李建忠  &;nbsp来自:网络


                第六讲 方法
 
    方法又称成员函数(Member Function),集中体现了类或对象的行为。方法同样分为静态方法和实例方法。静态方法只可以操作静态域,而实例方法既可以操作实例域,也可以操作静态域--虽然这不被推荐,但在某些特殊的情况下会显得很有用。方法也有如域一样的5种存取修饰符--public,protected,internal,protected internal,private,它们的意义如前所述。
    方法参数
 
    方法的参数是个值得特别注意的地方。方法的参数传递有四种类型:传值(by value),传址(by reference),输出参数(by output),数组参数(by array)。传值参数无需额外的修饰符,传址参数需要修饰符ref,输出参数需要修饰符out,数组参数需要修饰符params。传值参数在方法调用过程中如果改变了参数的值,那么传入方法的参数在方法调用完成以后并不因此而改变,而是保留原来传入时的值。传址参数恰恰相反,如果方法调用过程改变了参数的值,那么传入方法的参数在调用完成以后也随之改变。实际上从名称上我们可以清楚地看出两者的含义--传值参数传递的是调用参数的一份拷贝,而传址参数传递的是调用参数的内存地址,该参数在方法内外指向的是同一个存储位置。看下面的例子及其输出:
 
  using System;
  class Test
  {
      static void Swap(ref int x, ref int y)
      {
          int temp = x;
          x = y;
          y = temp;
      }
      static void Swap(int x,int y)
      {
          int temp = x;
          x = y;
          y = temp;
      }
      static void Main()
      {
          int i = 1, j = 2;
          Swap(ref i, ref j);
          Console.WriteLine("i = {0}, j = {1}", i, j);
          Swap(i,j);
          Console.WriteLine("i = {0}, j = {1}", i, j);
      }
  }
 
    程序经编译后执行输出:
 
  i = 2, j = 1
  i = 2, j = 1 
 
    我们可以清楚地看到两个交换函数Swap()由于参数的差别--传值与传址,而得到不同的调用结果。注意传址参数的方法调用无论在声明时还是调用时都要加上ref修饰符。
 
    (2005-5-14:07:40)

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [C#] 的这些文章也感兴趣:

如何使用微软的SAPI5.1中的TTS文语转换合成一个WAV文件,然后调用东进的API转换成PCM格式
应用系统架构设计
CLR系列:浅析.NET的JIT编译
通过C#程序调用外部程序
用C#制作印章
C#基础学习——异步编程篇
Beginnerwithc#3
.Net中如何操作IIS(原理篇)
在IE中托管WindowsForm
C#利用Web Service实现短信发送