• C#方法的参数类型


    在C#中,方法的参数类型有四种:

    • 值类型
    • 引用类型
    • 输出类型
    • 数组型参数

    值参数:

    所谓值参数,就是利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并将此拷贝传递给该方法,这样做的结果就是被调用的方法不会修改实参的值,保证了实际值的安全,在调用方法时,如果形参的类型时值类型的话,必须保证实参的类型也是值类型的数据.

    例子:

    public class MyClass
    {
        public MyClass()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
    
    
        public void ChangeValue(string value)
        {
            value = "Value is Changed!";
        }
    }
    
    -------------------------------------
    
    string value = "Value";
    Response.Write(value+"<br/>");
    
    MyClass mc = new MyClass();
    mc.ChangeValue(value);
    
    Response.Write(value);

    效果:

    image

    引用参数:

    使用ref关键字可以使参数按照引用传递.在需要传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中,若使用ref关键字,则在方法定义和调用方法时都必须显式使用ref关键字.

    注意ref的使用!

    例子:

    public class MyClass
    {
        public MyClass()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
    
    
        public void ChangeValue(ref string value)
        {
            value = "Value is Changed!";
        }
    }
    
    -----------------------------
    
            string value = "Value";
            Response.Write(value+"<br/>");
    
            MyClass mc = new MyClass();
            mc.ChangeValue(ref value);
    
            Response.Write(value);

    效果:

    image

    输出参数:

    使用out关键字来进行引用传递,这和ref关键字很累世,不同之处在于ref要求变量必须在传递之前就进行初始化,若使用out关键字,则方法定义和调用时都必须显式的使用out关键字.

    例子:

    public class MyClass
    {
        public MyClass()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
    
    
        public void ChangeValue(out string value)
        {
            value = "Value is Changed!";
        }
    }
    
    ---------------------------------
    
            string value ;
    
            MyClass mc = new MyClass();
            mc.ChangeValue(out value);
    
            Response.Write(value);

    效果:

    image

    数组型参数:

    数组型参数就是声明params关键字,用于指定在参数数目可变处采用参数的方法参数.

    在方法声明中的params关键字之后不允许任何其他参数,并且在方法声明中只允许一个params关键字.

    例子:

    public class MyClass
    {
        public MyClass()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
    
    
        public void ChangeValue(params string[] value)
        {
            foreach (string s in value)
            {
                HttpContext.Current.Response.Write(s + "<br/>");
            }
        }
    }
    
    ------------------------------------------
    
            string value1 = "Value1";
            string value2 = "Value2";
    
            MyClass mc = new MyClass();
            mc.ChangeValue(value1, value2);

    效果:

    image

    另:

    数组类型的参数:

    数组类型是引用类型的数据,所以也应归类于引用类型.

    public class MyClass
    {
        public MyClass()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
    
        public void ChangeValue(string[] value)
        {
            value[0] = "This is Value0,Changed!";
        }
    }
    
    ----------------------------------------------
    
            string[] value = { "Value1", "Value2" };
            Response.Write(value[0] + "<br/>");
    
            MyClass mc = new MyClass();
            mc.ChangeValue(value);
    
            Response.Write(value[0] + "<br/>");

    效果:

    image

    注意:

    ref和out的区别:

    传递到ref参数的参数必须最先初始化,而out的参数在传递之前不必初始化.

  • 相关阅读:
    重新进入学习模式
    第八章 函数
    第七章 用户输入和while语句
    第6章 字典
    第五章 if语句
    对前四章方法、函数、语句的总结
    完成四个章节的学习,我觉得有必要花一天的时间对各章节内的函数、方法、语句进行总结。明后天不再对新章节进行学习。
    第四章 操作列表
    第三章 列表简介
    C语言数据结构-折半查找
  • 原文地址:https://www.cnblogs.com/oneword/p/1549464.html
Copyright © 2020-2023  润新知