方法参数(params,ref,out)

params 使用该关键字可以指定采用数目可变的参数的方法参数,可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组,还可以不发送参数,如果未发送任何参数,则params列表的长度为0

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

public class MyClass
{
    public static void UseParams(params int[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }

    public static void UseParams2(params object[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }]

ref 关键字会导致通过引用传递的参数,而不是值。 通过引用传递的效果是在方法中对参数的任何改变都会反映在调用方的基础参数中。 引用参数的值与基础参数变量的值始终是一样的

out out 关键字会导致参数通过引用来传递。 这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。 若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字

class RefExample
    {
        static void Method(ref int i)
        {
            // Rest the mouse pointer over i to verify that it is an int.
            // The following statement would cause a compiler error if i
            // were boxed as an object.
            i = i + 44;
        }

        static void Main()
        {
            int val = 1;
            Method(ref val);
            Console.WriteLine(val);

            // Output: 45
        }
    }
class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
    static void Main()
    {
        int value;
        Method(out value);
        // value is now 44
    }
}

方法参数(params,ref,out)

时间: 2024-08-24 03:14:49

方法参数(params,ref,out)的相关文章

方法参数 Params

params,ref,out都是方法参数 首先类似这样的,传递的参数args添加了params修饰 public void OpenWindow(params object[] args){ int id=args[0]; Hashtable tab=(Hashtable)args[1]; } public void Init(){ List<ItemInfo> itemList=XUIManager.instance.getInfo<ItemInfo>(); OpenWindow

C#.NET常见问题(FAQ)-方法参数带ref是什么意思

写两个相同的方法,但是参数一个带ref,一个不带,从测试结果可以发现,a变量在ModifyValueByref之后发生了改变,而ModifyValueByvalue没效果 ? ? 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 ? 我的在线论坛: http://csrobot.gz01.bdysite.com/ ? 问题交流: QQ:910358960 邮箱:[email protected] ? ?

c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)

 一.方法参数的类型----值类型和引用类型 当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中即实参和形参中的数据相同但存放在内存的不同位置.所以,在目标方法中对形参所做的更改不会对调用者的初始变量产生任何影响. 当方法传递的参数是引用类型是,只是将变量的引用复制到目标参数中,实参和形参的引用指向内存中的同一位置.所以,在目标方法中对形参所做的更改会影响调用者的初始变量. 二.一些特殊的方法参数 1.引用参数---ref (使值类型的变量做方法参数时也可以传引用) 一些数据类型(

C# 参考之方法参数关键字:params、ref及out

如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值.可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值.通过使用方法参数关键字,可以更改这种行为. params params 关键字可以指定在参数数目可变处采用参数的方法参数. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字. 示例: 字面意思比较难懂,所以看示例很有用. using System; class App { public stati

out参数,ref参数,params参数数组

params参数数组 params关键字可以为方法指定数目可变的参数.params关键字修饰的参数,可以传入任意数目的同类型参数,甚至可以不传入参数. 不过params修饰的参数必须是方法的最后一个参数,并且一个方法只能有一个params修饰的参数. 示例 public class MyClass { public static void UseParams(params int[] list) { for (int i = 0; i < list.Length; i++) { Console.

ref out 方法参数

ref 关键字使用参数按引用传递,而不是值,通过引用传递的效果是在方法中对参数的任何修改都会反映在调用方法 的基础参数中.引用参数的值与基础参数变量的值始终是一样的.1.若要使用 ref 参数,则方法定义和调用方法都必须显示使用 ref关键字2.传递到 ref 参数必须先初始化,这与out不同,out的参数在传递之前不需要显示初始化3.属性不是变量,因此不能作为 ref 参数传递4.尽管ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的.因此,如果一个方法采用 ref参

C#中三个关键字params,Ref,out

关于这三个关键字之前可以研究一下原本的一些操作 using System; using System.Collections.Generic; using System.Text; namespace ParamsRefOut { class Program { static void ChangeValue(int i) { i=5; Console.WriteLine("The ChangeValue method changed the value "+i.ToString())

C# ---- 数据类型(params/ref/out)

这篇是各种数据类型,各种参数总结.有点乱.没来得及整理.有空会再整理下.还有这是搜集的各路资料和自己的一些总结.谢谢各路大神!! 1.理论概念   C#数据类型结构图: 计算机分为5个区 1.常量区 2.静态区 (static修饰的) 3.代码区  运行方法的时候会找到代码区 4.栈区(值类型,定义一个变量入栈开辟空间,定义完自动释放空间)int a = 10,此处a为值 5.堆区(数组中,new称为运算符,new的时候在堆中开辟空间)int[] a = new int[];此处a为存储的地址

重新学习C#系列-01.方法参数

在介绍之前先来看两个概念:形参和实参. 1.形参声明在方法的参数列表中,如下面代码中,x和y为形参. 2.实参是用于初始化形参的表达式或变量,如下面代码.5和Age为方法实参,5是表达式,Age是int类型的变量. int Age=10; MethodName(5,Age); 二.C#中方法参数可以分为:值参数.引用参数.输出参数和参数数组. 1.值参数:通过将实参的值复制到形参的方式把数据传递给方法.方法被调用时,系统如下操作:1)在栈中为形参分配空间:2)将实参的值复制给形参.如下. 注意: