C#方法参数传递机制

1:value(值传递)、ref(引用传递)、out(输出传递)

ref和out使用效果上面是等效的,它们的区别在于:参数标记为ref,那么必须在调用函数之前初始化参数的值;参数标记为out,调用函数之前不需要初始化对象,但调用的函数必要在函数返回之前为对象赋值

using System;

//value(值传递)、ref(引用传递)、out(输出传递)
public class Test
{
    public static void ValueFun(int i)
    {
        i++;
    }

    public static void RefFun(ref int j)
    {
        j++;
    }

    public static void OutFun(out int k)
    {
        k = 0;//使用out关键字,必须参数初始化
        k++;
    }

    static void Main()
    {
        int i = 0;
        ValueFun(i);//i的值是实参的一个副本,实参i不会改变
        Console.WriteLine(i);

        int j = 0;
        RefFun(ref j);//指向同一块内存,实参j的值会改变
        Console.WriteLine(j);

        int k;
        OutFun(out k);//和ref关键字等效
        Console.WriteLine(k);
    }
}

2:params可变参数

params主要的用处是在给函数传参数的时候用,就是当函数的参数不固定的时候。

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

关于参数数组,需掌握以下几点:

  (1)若形参表中含一个参数数组,则该参数数组必须位于形参列表的最后

  (2)参数数组必须是一维数组

  (3)不允许将params修饰符与ref和out修饰符组合起来使用

  (4)与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的变量

  (5)若实参是数组则按引用传递,若实参是变量或表达式则按值传递

  (6)用法:可变的方法参数,也称数组型参数,适合于方法的参数个数不知的情况,用于传递大量的数组集合参数;当使用数组参数时,可通过使用params关键字在形参表中指定多种方法参数,并在方法的参数表中指定一个数组,形式为:方法修饰符 返回类型 方法名(params 类型[] 变量名)

using System;

//可变数量参数
//关键字params后面必须是一个数组
public class Test
{
    static int addInt(params int[] values)
    {
        int sum = 0;
        foreach (int i in values)
        {
            sum += i;
        }
        return sum;
    }
    static void Main()
    {
        int[] arr = {1,2,3,4,5,6,7,8,9};
        Console.WriteLine(addInt(arr));
    }
}转自:http://www.cnblogs.com/ArmyShen/archive/2012/08/27/2657899.html
时间: 2024-10-11 17:57:48

C#方法参数传递机制的相关文章

4.2 方法所属性、方法参数传递机制、形参个数可变的方法

一.方法的所属性 方法由传统的函数发展而来,方法与传统的函数显著不同:在结构化编程中,函数是一等公民,这个程序由一个个函数组成:在面向对象编程语言里,类才是一等公民,整个系统由一个个类组成.因此在Java语言里,方法不能独立存在,方法必须属于类或对象. 方法的所属性:(1)方法类似于函数.但与函数不同的是,方法不能存在,方法必须定义在类里面.(2)方法一定要有执行者,必须通过类或对象来调用方法.从逻辑上来看,该方法属于类本身,应该用类来调用 如果该方法有static修饰,该方法属于类本身,应该用

方法的参数传递机制(C#)

六 方法的参数传递机制 值参数,引用参数,输出参数 //参数的传递机制 using System; class Method { //值参数,传递的是数值本身,不改变外部变量的值 public static void ValueMethod(int i) { i++; } //引用参数,传递的是数据地址,直接对数据进行操作,原值要变化 //要注意的是string类型,赋值以后原值就不好改变了 public static void ReferenceMethod(ref int i) { i++;

我的Java开发学习之旅------>Java语言中方法的参数传递机制

实参:如果声明方法时包含来了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时传给形参的参数值也被称为实参. Java的实参值是如何传入方法?这是由Java方法的参数传递机制来控制的,Java里方法的参数传递方式只有一种:值传递.所谓值传递,就是将实际参数的副本(复制品)传入方法内,而参数本身不会收到任何影响. 一.参数类型是原始类型的值传递 下面通过一个程序来演练 参数类型是原始类型的值传递的效果: public class ParamTransferTest { public sta

尚硅谷面试第一季-04方法的参数传递机制

面试题代码: 1 package 方法的参数传递机制; 2 3 import java.util.Arrays; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-03-27 9:37 9 * @Describe 方法的传递机制 10 * (1)形参是基本数据类型的 11 * 传递数据值 12 * (2)形参是引用数据类型的 13 * 传递地址值 14 * 特殊的类型:String.包装类等对象不可变性 15 */ 16 pu

深入理解Java中方法的参数传递机制

形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. 在程序设计语言中,参数有形式参数和实际参数之分,先来看下它们的定义: 形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,简称"形参". 实际参数:在主调函数中调用一个函数时,函数名后面括号中的参数称为"实际参数",简称"

JavaSE 面试题: 方法的参数传递机制

JavaSE 面试题 方法的参数传递机制 import java.util.Arrays; public class Test { public static void main(String[] args) { int i = 1; String str = "hello"; Integer num = 200; int[] arr = {1, 2, 3, 4, 5}; MyData my = new MyData(); change(i, str, num, arr, my); S

深入剖析C/C++函数的参数传递机制

2014-07-29 20:16 深入剖析C/C++函数的参数传递机制 C语言的函数入口参数,可以使用值传递和指针传递方式,C++又多了引用(reference)传递方式.引用传递方式在使用上类似于值传递,而其传递的性质又象是指针传递,这是C++初学者经常感到困惑的.为深入介绍这三种参数传递方式,我们先把话题扯远些: 1. C/C++函数调用机制及值传递: 在结构化程序设计方法中,先辈们告诉我们,采用“自顶向下,逐步细化”的方法将一个现实的复杂问题分成多个简单的问题来解决.而细化到了最底层,就是

python中的*和**参数传递机制

python的参数传递机制具有值传递(int.float等值数据类型)和引用传递(以字典.列表等非值对象数据类型为代表)两种基本机制以及方便的关键字传递特性(直接使用函数的形参名指定实参的传递目标,如函数定义为def f(a,b,c),那么在调用时可以采用f(b=1,c=2,a=3)的指定形参目标的传递方式,而不必拘泥于c语言之类的形参和实参按位置对应) 除此之外,python中还允许包裹方式的参数传递,这未不确定参数个数和参数类型的函数调用提供了基础: def f(*a,**b) 包裹参数传递

Java中的参数传递机制

通过前一篇文章的介绍,我们从整体上明白了,Java类中变量的差异性.不同变量在内存中的存储位置,以及变量的生命周期等.今天,我们来看一下Java中参数传递的机制. 形参:方法声明时包含的参数声明 实参:调用方法时,实际传给形参的参数值 Java方法的参数传递机制: Java方法的参数传递只有一种:值传递.所谓值传递,就是将实际参数值的副本,传入方法内,而参数本身不会收到任何影响. PS:传入方法的时实际参数值的复制品,不管方法中对这个复制品如何操作,实际参数本身不会受到任何影响. 基本类型的参数