C#:study(1)--out&&ref&¶ms

  • @使用预算符?防止除数为0
    for(int i = -5;i<6;i++)
       if(i !=0 ? true : false)
             Console.Write("100 /" + i + "is " +100/i);
    @C#访问控制--encapsulation(封装)
    public
    protected internal
    internal//同一程序集(assembly)中可以访问
    protected//继承
    private
  • @使用ref和out参数
    缺省情况下,数值类型参数按值传递给方法,通过使用ref关键字,可以按引用传递任何数值类型参数,即允许方法改变调用的实参。通过使用out关键字,可以返回一个以上的值,注意our参数总是被看作“未分配”,即被认为没有初值。
    //定义
    public void swap(ref int a,ref int b)
    {
     int t;
     t = a;
     a = b;
     b = t;
    }
    //调用
    int x =10,y = 20;
    swap(ref x,ref y);
    //注意:通过ref传递的实参在调用之前必须赋值。
    //返回面积并判断是否正方形
    //定义
    public int rectInfo(out bool isSquare)
    {
     if(side1==side2) isSquare = true;
     else isSquare = false;
     return side1*side2;
    }
    //调用
    int area;
    bool isSqr;
    area = rectInfo(out isSqr);
  • @使用可变数量的参数--params修饰符
    params修饰符用来声明一个数组参数,这个数组参数可以接收0个或多个实参。当方法既有正规参数又有params参数时,params参数必须位于参数表的最后面。而且在任何情况下都只能有一个参数。
    //定义
    public int minVal(params int[] nums)
    {
     int m;
     if(nums.Length == 0)
     {
      Console.WriteLine("Error:no argments.");
      return 0;
     }
     m = nums[0];
     for(int i=1;i<nums.Length;i++)
      if(nums[i]<m) m = nums[i];
     return m;
    }
    //调用
    int min;
    int a = 10 ,b = 20;
    min = minVal(a,b);
    min = minVal(a,b,50);
    min = minVal(1,20,36,52,456,789);
  • @通过this调用重载的构造函数
    通过this调用构造函数的原因之一是它避免了不必要的代码重复;另一个好处是可以建立带隐含“缺省实参”的构造函数。如:
    public XYCoord(int x):this(x,x){...}
    //例如:
    using System;
    class XYCoord
    {
     public int x,y;
     public XYCoord():this(0,0)
     {...}
     public XYCoord(XYCoord obj):this(obj.x,obj.y)
     {...}
     public XYCoord(int x,int y)
     {...}
    }
  • @C#中的Main()形式
    static void Main() {}
    static int Main() {}
    static int Main(string[] args){}
    static void Main(string[] args){}
posted @ 2005-08-18 10:22  zhh007's Bolg  阅读(298)  评论(0编辑  收藏  举报