c#的参数传递有三种方式:
值传递,和c一样,
引用传递,类似与c++,但形式不一样
输出参数,这种方式可以返回多个值,这种有点像c中的指针传递,但其实不太一样。
值传递不细说,c中已经很详细了
引用传递实例如下:需要使用ref关键字

using System;
namespace CalculatorApplication
{
class NumberManipulator
{
//引用传递必须使用ref
public void swap(ref int x, ref int y)
{
int temp; temp = x; /* 保存 x 的值 */
x = y; /* 把 y 赋值给 x */
y = temp; /* 把 temp 赋值给 y */
} static void Main(string[] args)
{
NumberManipulator n = new NumberManipulator();
/* 局部变量定义 */
int a = 100;
int b = 200; Console.WriteLine("在交换之前,a 的值: {0}", a);
Console.WriteLine("在交换之前,b 的值: {0}", b); /* 调用函数来交换值 */
n.swap(ref a, ref b); Console.WriteLine("在交换之后,a 的值: {0}", a);
Console.WriteLine("在交换之后,b 的值: {0}", b); Console.ReadLine(); }
}
}

按输出传递参数
return 语句可用于只从函数中返回一个值。但是,可以使用 输出参数 来从函数中返回两个值。输出参数会把方法输出的数据赋给自己,其他方面与引用参数相似。
使用关键字out。
下面的实例演示了这点:

using System;

namespace CalculatorApplication
{
class NumberManipulator
{
//使用out可以吧x的值重新复制给x,相当于更新
public void getValue(out int x )
{
int temp = 5;
x = temp;
} static void Main(string[] args)
{
NumberManipulator n = new NumberManipulator();
/* 局部变量定义 */
int a = 100; Console.WriteLine("在方法调用之前,a 的值: {0}", a); /* 调用函数来获取值 */
n.getValue(out a); Console.WriteLine("在方法调用之后,a 的值: {0}", a);
Console.ReadLine(); }
}
}

  有out之后,a的值就变成了5。

两个参数的实例:

using System;

namespace CalculatorApplication
{
class NumberManipulator
{
//使用out可以吧x的值重新复制给x,相当于更新
public void getValue(out int x, out int y)
{
int temp = 5;
x = temp; y = x;
} static void Main(string[] args)
{
NumberManipulator n = new NumberManipulator();
/* 局部变量定义 */
int a = 100;
int b = 20; Console.WriteLine("在方法调用之前,a 的值: {0}, b的值:{1}", a, b); /* 调用函数来获取值 */
n.getValue(out a, out b); Console.WriteLine("在方法调用之前,a 的值: {0}, b的值:{1}", a, b);
Console.ReadLine(); }
}
}

  再说一点就是,vs的ide功能,的确是很强大的,很多语法提示都有。

下面还有一个用处:

提供给输出参数的变量不需要赋值。当需要从一个参数没有指定初始值的方法中返回值时,输出参数特别有用。请看下面的实例,来理解这一点:
using System;

namespace CalculatorApplication
{
class NumberManipulator
{
//提供给输出参数的变量不需要赋值。当需要从一个参数没有指定初始值的方法中返回值时,输出参数特别有用。请看下面的实例,来理解这一点:
public void getValues(out int x, out int y)
{
Console.WriteLine("请输入第一个值: ");
x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入第二个值: ");
y = Convert.ToInt32(Console.ReadLine());
} static void Main(string[] args)
{
NumberManipulator n = new NumberManipulator();
/* 局部变量定义 */
int a, b; /* 调用函数来获取值 */
n.getValues(out a, out b); Console.WriteLine("在方法调用之后,a 的值: {0}", a);
Console.WriteLine("在方法调用之后,b 的值: {0}", b);
Console.ReadLine();
}
}
}

  

c#的参数调用的更多相关文章

  1. Atitit main函数的ast分析  数组参数调用的ast astview解析

    Atitit main函数的ast分析  数组参数调用的ast astview解析 1.1. Xxcls.main(new String[]{"","bb"}) ...

  2. PHP通过传递对象参数调用asp.net Webservice 服务

    asp.net 测试服务 ProcessRequest.asmx文件代码  public class ProcessRequest : System.Web.Services.WebService   ...

  3. JavaScript函数定义 ,参数调用

    一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...

  4. Scala 按名称参数调用函数 与 =>的用法

    转自:http://blog.csdn.net/shenxiaoming77/article/details/54835679 通常情况下,函数的参数是传值参数:即参数的值在它被传递给函数之前被确定. ...

  5. 可以使用可用的服务和参数调用在“eWorld.WCFImplement.ServiceImplement.ImageArchiveService”类型上使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”找到的构造函数: 无法解析参数'eWorld.WCFBLL.ImageArchive.IDocumentOperation

    可以使用可用的服务和参数调用在“eWorld.WCFImplement.ServiceImplement.ImageArchiveService”类型上使用“Autofac.Core.Activato ...

  6. python定义函数时的参数&调用函数时的传参

    一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...

  7. 使用“1”个参数调用“DownloadString”时发生异常:“操作超时”

    我今天在终端美化时间遇到一个问题是这样的 使用“1”个参数调用“DownloadString”时发生异常:“操作超时” 然后网我看了下,访问链接属于https的东西,根据直觉我觉得是这样的,是由于访问 ...

  8. 使用“2”个参数调用“SetData”时发生异常:“程序集“

    使用"2"个参数调用"SetData"时发生异常:"程序集"Microsoft.VisualStudio.ProjectSystem.VS. ...

  9. 不封装ajax 带url参数调用接口

    html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  10. [Effective JavaScript 笔记]第21条:使用apply方法通过不同数量的参数调用函数

    apply()方法定义 函数的apply()方法和call方法作用相同,区别在于接收的参数的方式不同.apply()方法接收两个参数,一个是对象,一个是参数数组. apply()作用 1.用于延长函数 ...

随机推荐

  1. HashMap、HashTable与ConcurrentHashMap的区别

    1.HashTable与HashMap (1)HashTable和HashMap都实现了Map接口,但是HashTable的实现是基于Dictionary抽象类. (2)在HashMap中,null可 ...

  2. 浅析 Java 中的继承和重写

    浅析 Java 中的继承和重写 Java 中的构造方法不能被继承. Java 中 static 修饰的方法可以被继承,但不能被子类重写. Java 中 final 修饰方法不允许被子类重写,但是可以被 ...

  3. fineui整合kindeditor的例子

    如果看不清: http://fineui.com/bbs/forum.php?mod=viewthread&tid=6683   注意:高于fineui v4.2.0的版本kindeditor ...

  4. MySQL视图、触发器、事务、存储过程、内置函数、流程控制、索引

    一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view tea ...

  5. python知识架构

    如果看不清可以右键图片打开新的标签页 原文链接:https://blog.csdn.net/oscer2016/article/details/80129284

  6. jenkins+springboot+maven多模块部署

    一.jenkins的安装配置 1.去官网下载war包,这种方式比较简单方便 java -jar jenkins.war --httpPort=49001 2.首次运行有一个key放在服务器上需要你填入 ...

  7. RabbitMQ之消息模式(下)

    目的: RabbitMQ之消息模式(上):https://www.cnblogs.com/huangting/p/11994539.html 消费端限流 消息的ACK与重回队列 TTL消息 死信队列 ...

  8. Drools7 Hello Wrold 入门详细步骤--系列01课

    一.什么叫规则引擎?规则--->写在文档上引擎--->在java代码上,引用这个文档上的规则 二.drools规则引擎有什么用?简单来说就是将多变的规则,从业务代码中剥离出来(当规则变了之 ...

  9. Linux系统新手入门学习的四点建议

    随着计算机的普及.互联网的发展,原本黑客手中的攻城利器---Linux,渐渐进入到普通群众的视线里,让越来越多的人接触到Linux,并学习Linux进而投身到Linux运维工作中去.如果大家对Linu ...

  10. AngularJS $http用法总结

    最近由于项目需要,在研究AngularJS $http的用法,查了很多资料,发现貌似没有一篇内容可以完整的满足我对$http的基本了解,为了下次方便自己查找,所以特意把最近查到的一些资料和自己的理解记 ...