C#中方法参数的四种类型

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

-值参数:不含任何修饰符。方法中的形参是实参的一份拷贝,形参的改变不会影响到内存中实参的的值,实参是安全的。

-引用参数:以ref修饰符声明。传递的参数实际上是实参的指针,所以在方法中的操作都是直接对实参进行的,而不是复制一个值;可以利用这个方式在方法调用时双向传递参数;为了以ref方式使用参数,必须在方法声明和方法调用中都明确地指定ref关键字,并且实参变量在传递给方法前必须进行初始化。

-输出参数:以out修饰符声明。和ref类似,它也是直接对实参进行操作。在方法声明和方法调用时都必须明确地指定out关键字。out参数声明方式不要求变量传递给方法前进行初始化,因为它的含义只是用作输出目的。但是,在方法返回前,必须对out参数进行赋值。

-数组型参数:以params修饰符声明。params关键字用来声明可变长度的参数列表。方法声明中只能包含一个params参数。

using System;
class Test
{
    static void F(params int[] args)
    {
       Console.WriteLine("Array contains {0} elements:",args.Length);
       foreach(int i in args)
           Console.Write("{0}",i);
       Console.WriteLine();
    }
    public static void Main()
    {
       int [] a = {1,2,3};
       F(a);
       F(10,20,30,40);
       F();
}
}

时间: 2024-11-16 20:21:53

C#中方法参数的四种类型的相关文章

C#中方法参数的四种类型

C#中方法的参数有四种类型:-值参数:不含任何修饰符.方法中的形参是实参的一份拷贝,形参的改变不会影响到内存中实参的的值,实参是安全的.-引用参数:以ref修饰符声明.传递的参数实际上是实参的指针,所以在方法中的操作都是直接对实参进行的,而不是复制一个值:可以利用这个方式在方法调用时双向传递参数:为了以ref方式使用参数,必须在方法声明和方法调用中都明确地指定ref关键字,并且实参变量在传递给方法前必须进行初始化.-输出参数:以out修饰符声明.和ref类似,它也是直接对实参进行操作.在方法声明

C#方法传参数的四种类型总结

下面是c#常用的四种类型的参数,整理出来方便系统学习. 一.按值传递参数 值参数是通过将实参的值复制到形参,来实现按值传递到方法,也就是我们通常说的按值传递. 方法被调用时,CLR做如下操作: 1.在托管堆栈中为形参分配空间: 2.将实参的值复制到形参. 这个太常用了,按值传递参数,是复制一份,因此不影响原来参数的值.     class Program {     public static int Foo(int i, out int j)     {         i++;       

Python函数中定义参数的四种方式_python

Python中函数参数的定义主要有四种方式: 1. F(arg1,arg2,-) 这是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等 的值(实际参数),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应,也就是说第一个形参对应这第一个实参.例如: 复制代码 代码如下: def a(x,y):print x,y 调用该函数,a(1,2)则x取1,y取2,形参与实参相对应

Cisco四种类型的防火墙技术汇总

我们知道防火墙有四种类型:集成防火墙功能的路由器,集成防火墙功能的代理服务器,专用的软件防火墙和专用的软硬件结合的防火墙.Cisco的防火墙解决方案中包含了四种类型中的第一种和第四种,即:集成防火墙功能的路由器和专用的软硬件结合的防火墙. 一. 集成在路由器中的防火墙技术 1. 路由器IOS标准设备中的ACL技术 ACL即Access Control Lis t(访问控制列表),简称Access List(访问列表),它是后续所述的IOS Firewall Feature Set的基础,也是Ci

Java获取代码中方法参数名信息的方法_java

前言 大家都知道随着java8的使用,在相应的方法签名中增加了新的对象Parameter,用于表示特定的参数信息,通过它的getName可以获取相应的参数名.即像在代码中编写的,如命名为username,那么在前台进行传参时,即不需要再编写如@Parameter("username")类的注解,而直接就能进行按名映射. 如下的代码参考所示: public class T { private interface T2 { void method(String username, Stri

java泛型-java中方法参数和泛型参数有什么区别

问题描述 java中方法参数和泛型参数有什么区别 java中方法参数和泛型参数有什么区别 方法是可以省略参数数据类型的 泛型可以省略吗 解决方案 泛型就是泛滥的数据类型(我是这样理解的),用T表示,代表了所有的数据类型.比如一个函数传递的值是String,但是因为需求,还需要支持int型.在这种情况下可以考虑重写方法,也可以考虑用T(泛型)来代替String,表示什么类型都可以.封装的时候经常用到. 解决方案二: 不清楚,java方法的参数数据类型可以省略吗-_=我去补一下知识

mysql中模糊查询的四种用法介绍_Mysql

下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为"张三","张猫三"."三脚猫","唐三藏"等等有"三"的记录全找出来. 另外,如果需要找出u_name中既有"三"又有

四种类型的数据分析模式

在这篇博文中,我们聚焦于在数据科学领域所遇到的四种类型的数据分析模式:描述型.诊断型.预测型和指导型. 当我与刚涉足数据科学领域的年轻分析师们交谈时,通常,我会问他们认为什么是数据科学家最重要的能力.他们的答案相当多样化. 我想告诉他们的是,他们最重要的能力将是能够把数据转化为对非专业人士而言清楚而有意义的见解.瑞典统计学家Hans Rosling在这方面很有名.这种能力往往被忽略.下面Hans Rosling的这个TedTalk谈到了这些. 分析能辅助开发有价值的见解,很有必要用一些工具来让人

数据分析的四种类型模式

在这篇博文中,我们聚焦于在数据科学领域所遇到的四种类型的数据分析模式:描述型.诊断型.预测型和指导型. 当我与刚涉足数据科学领域的年轻分析师们交谈时,通常,我会问他们认为什么是数据科学家最重要的能力.他们的答案相当多样化. 我想告诉他们的是,他们最重要的能力将是能够把数据转化为对非专业人士而言清楚而有意义的见解.瑞典统计学家 Hans Rosling 在这方面很有名.这种能力往往被忽略.下面 Hans Rosling 的这个 TedTalk 谈到了这些: 分析能辅助开发有价值的见解,很有必要用一