c#的参数调用
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#的参数调用的更多相关文章
- Atitit main函数的ast分析 数组参数调用的ast astview解析
Atitit main函数的ast分析 数组参数调用的ast astview解析 1.1. Xxcls.main(new String[]{"","bb"}) ...
- PHP通过传递对象参数调用asp.net Webservice 服务
asp.net 测试服务 ProcessRequest.asmx文件代码 public class ProcessRequest : System.Web.Services.WebService ...
- JavaScript函数定义 ,参数调用
一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...
- Scala 按名称参数调用函数 与 =>的用法
转自:http://blog.csdn.net/shenxiaoming77/article/details/54835679 通常情况下,函数的参数是传值参数:即参数的值在它被传递给函数之前被确定. ...
- 可以使用可用的服务和参数调用在“eWorld.WCFImplement.ServiceImplement.ImageArchiveService”类型上使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”找到的构造函数: 无法解析参数'eWorld.WCFBLL.ImageArchive.IDocumentOperation
可以使用可用的服务和参数调用在“eWorld.WCFImplement.ServiceImplement.ImageArchiveService”类型上使用“Autofac.Core.Activato ...
- python定义函数时的参数&调用函数时的传参
一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...
- 使用“1”个参数调用“DownloadString”时发生异常:“操作超时”
我今天在终端美化时间遇到一个问题是这样的 使用“1”个参数调用“DownloadString”时发生异常:“操作超时” 然后网我看了下,访问链接属于https的东西,根据直觉我觉得是这样的,是由于访问 ...
- 使用“2”个参数调用“SetData”时发生异常:“程序集“
使用"2"个参数调用"SetData"时发生异常:"程序集"Microsoft.VisualStudio.ProjectSystem.VS. ...
- 不封装ajax 带url参数调用接口
html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- [Effective JavaScript 笔记]第21条:使用apply方法通过不同数量的参数调用函数
apply()方法定义 函数的apply()方法和call方法作用相同,区别在于接收的参数的方式不同.apply()方法接收两个参数,一个是对象,一个是参数数组. apply()作用 1.用于延长函数 ...
随机推荐
- PHP匹配中文,匹配车牌号
/** * 车牌号 * 字母全部大写 * @param $str * @return string */ public static function checkCar($str) { $patter ...
- Tomcat:Commons Daemon procrun stdout initialized
1.问题查询 更换了Tomcat版本后服务器无法启动,看日志出现了Commons Daemon procrun stdout initialized错误,一开始以为是环境变量的配置问题,但是仔细检查后 ...
- MyBatis参数条件查询传入的值为0时的判断
MyBatis条件查询对字段判断是否为空一般为: <if test="testValue!=null and testValue != ''"> and test_va ...
- 用C#做一个 拉流播放器
做拉流播放器第一个想到就是,.,..FFmpeg没错 我也是用强大的他它来做的.但是我用的不是 cmd 调用 而是用的强大的FFmpeg.AutoGen FFmpeg.AutoGen 这个是C# 一 ...
- .Net MVC如何渲染带有网页标签的字符串
有时候我们在解析一段文字时,可能文字中会包含网页上的标签,如div.p等等.那么如果将这种文字渲染成对应的标签效果呢?如图,最近博主就拿到了这么一段字符串(如图) 由于中间带有很多特殊字符,用Html ...
- TCP,UDP 通讯的helper类
使用Tcp通讯,首先要启动tcp服务端监听客户端,客户端发送消息,服务端收到消息 1.服务端代码如下 public class TcpServerTest { public async Task Be ...
- np.newaxis的使用及有趣的数组相乘
a=np.array([1,2,3,4])a=a[np.newaxis,:] #固定行,相当于1行多列b=np.array([2,4,6]) b=b[:,np.newaxis] #固定列,相当与多行1 ...
- react 实现评分组件
写了个评分组件,效果如下 组件Rate.js import React, { Component } from 'react' import './Rate.less' export default ...
- JAVA基础之JavaEE与MVC
所谓的架构.模式都是方便开发和查看的,分工明确的,理解每层的具体的意义! 一.JavaEE: 1.Java EE,Java 平台企业版(Java Platform Enterprise Edition ...
- 自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave
自旋锁和互斥锁的区别是,自旋锁不会引起睡眠,所以可用于不能休眠的代码中(如IRQ) 自旋锁保持期间抢占失效,而信号量保持期间可以被抢占 定义 spinlock_t lock; init #define ...