zoukankan      html  css  js  c++  java
  • 关于参数

    小结:

    1. 按引用传递参数
    在C#中可以使用关键字out或ref来实现按引用传递参数,从CLR的角度看,out与ref生成的元数据及IL代码都是相同的。

    a. out参数在传值前可以先赋值也可以不赋,但在方法返回时必须被赋值
    b. ref参数在传值前必须先赋值,在方法返回时可以修改其值
    c. 重载仅存在out和ref差异的方法是不合法的,因为这两个方法签名的元数据表示是相同的。如:

    public sealed class Point{
        static void Add(out Int32 sx){...}
        static void Add(ref Int32 sx){...}
    }//这是不允许的

    d. 按引用传递给方法的变量类型必须要与方法签名中参数类型相同
    例子:交换两个引用类型变量的方法

    public static void Swap(ref Object o1, ref Object o2)
    {
           Object t = o1;
           o1 = o2;
           o2 = t;
    }
    
    调用1:
    public void DoSomething()
    {
         String s1 = "s1 text";
         String s2 = "s2 text";
       
         Swap(ref s1, ref s2);//编译器会提示有不合法的参数
    }
    
    调用2:
    public void DoSomething()
    {
       String s1 = "s1 text";
       String s2 = "s2 text";
       
    //要先转换成Swap声明中参数的类型 Object o1
    = s1; Object o2 = s2; Swap(ref o1, ref o2);//通过编译 }

    2. 参数数组

    public Int32 Add(params Int32[] values){...}

    a. 用params修饰的参数必须放在所有参数的后面【最后一个参数】,在传值时,可以传0个或多个值,也可以传null 值

    b. 使用参数数组时,是有损耗性能的,毕竟它是一个数组类型【引用类型】,在heap上分配空间,数组中的元素必须初始化,用完之后这个数组空间要被GC收回

    3.方法返回值与方法参数的设计规则

    a. 对于方法参数,采用弱参数类型较好,如:

    public void DoSomething(Stream someStream) {...}
    ----弱参数类型:此方法可以处理任何一种Stream类型,限制宽松,即可以是FileStream、NetworkStream、MemoryStream等,
    
    public void DoSomething(FileStream fileStream) {...}
    ----强参数类型:此方法只能处理FileStream一种类型,限制太死

    b. 对于方法的返回值,一般采用强类型较好,即限制较死

    public FileStream OpenFile() { ...}
    ----强类型
    
    public Stream OpenFile() { ...}
    ----弱类型

    4. 索引

            public Int32 this[Boolean b]
            {
                get { return 0; }
            }
            public String this[Boolean b]
            {
                get { return null; }
            }
    ----在C#中,只是名字不同是区分不了这两个索引的,只要参数类型不同就可以区分。换句话说,是依据参数类型的不同来区分索引的,不关索引名字的事。
  • 相关阅读:
    zoj 2316 Matrix Multiplication 解题报告
    BestCoder7 1001 Little Pony and Permutation(hdu 4985) 解题报告
    codeforces 463C. Gargari and Bishops 解题报告
    codeforces 463B Caisa and Pylons 解题报告
    codeforces 463A Caisa and Sugar 解题报告
    CSS3新的字体尺寸单位rem
    CSS中文字体对照表
    引用外部CSS的link和import方式的分析与比较
    CSS样式表引用方式
    10个CSS简写/优化技巧
  • 原文地址:https://www.cnblogs.com/notebook2011/p/2932863.html
Copyright © 2011-2022 走看看