`

C#入门经典之输出参数

阅读更多

除了按引用传递值之外,还可以使用out关键字,指定所给的参数是一个输出参数。out关键字

的使用方式与ref关键字相同(在函数定义和函数调用中用作参数的修饰符)。实际上,它的执行方式

与引用参数完全一样,因为在函数执行完毕后,该参数的值将返回给函数调用中使用的变量。但是,

存在一些重要区别。

  • 把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数。
  • 另外,在函数使用out参数时,out参数必须看作是还未赋值。

即调用代码可以把已赋值的变量用作out参数,存储在该变量中的值会在函数执行时丢失。

例如,考虑前面返回数组中最大值的MaxValue()函数,略微修改该函数,获取数组中最大值的

元素索引。为简单起见,如果数组中有多个元素的值都是这个最大值,只提取第一个最大值的索引。

为此,修改函数,添加一个out参数,如下所示:

static int MaxValue(int[] intArray, out int maxIndex) 
{ 
int maxVal = intArray[0]; 
maxIndex = 0; 
for (int i = 1; i < intArray.Length; i++) 
{ 
if (intArray[i] > maxVal) 
{ 
maxVal = intArray[i]; 
maxIndex = i; 
} 
} 
return maxVal; 
} 

 

可以采用以下方式使用该函数:

int[] myArray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 }; 
int maxIndex; 
Console.WriteLine("The maximum value in myArray is {0}", 
MaxValue(myArray, out maxIndex)); 
Console.WriteLine("The first occurrence of this value is at element {0}", 
maxIndex + 1); 

 

结果如下:

The maximum value in myArray is 9 
The first occurrence of this value is at element 7 

注意,必须在函数调用中使用out关键字,就像ref关键字一样

分享到:
评论

相关推荐

    明日科技C#开发入门及项目实战

    实例112 使用接口作为方法参数进行编程 实例113 自定义抽象类计算圆形的面积 实例114 重写抽象方法实现多态性 实例115 使用密封类密封登录用户信息 实例116 使用密封类封装个人身份证信息 实例117 使用迭代器显示...

    C#百例(100个个例,教你学会C#)

    12、该程序显示了各种值参数、引用参数和输出参数的初始化和调用结果比较。 13、该程序显示了c#中指针的用法, 14、该程序显示了打开文件并写入文字,若该文件不存在,就显示该完全路线。 15、该程序是一个输入姓名...

    C# 基础学习案例源码-2023(32套源码案例)适合初学者学习使用

    C# 基础学习案例源码(32套源码案例) CS_01你好世界 CS_02输入和输出 CS_03异常捕获 CS_04字符串拼装 CS_05枚举 CS_06数组 CS_07二维数组 CS_08交错数组 CS_09值类型和引用类型 CS_10特殊的引用类型string CS_11...

    C#快速入门.doc

    输出参数..................................................................24 可变数量的参数和数组 ......................................25 运算符与表达式................................................

    轻松学C#(图解版)

    第1章 C#入门 2 1.1 C#概述 2 1.1.1 C#的发展 2 1.1.2 C#开发的基础 2 1.2 搭建开发环境 3 1.2.1 Visual Studio 2012软硬件配置要求 3 1.2.2 下载Visual Studio 2012 3 1.2.3 安装Visual Studio 2012 4 1.2.4 初始化...

    c#学习笔记.txt

    另外他对我上一集中说Microsoft越来越不要脸也极为生气,因为相比之下,Sun也不怎么样,微软已经将C#提交设在日内瓦的ECMA(European Computer Manufacturers' Association,国际标准化机构欧洲电子计算机工业会)并...

    ASP.NET完全入门PDF

    3. 输出参数ii. 使用触发器iii. 小结第四章 内存中的数据库 i. 字段映射ii. 数据表iii. 表间关系 iv. 表间约束v. DataSet和XML 第五章响应ADO.NET的事件 i. DataSet Events ii. DataTable Events 第六章数据绑定i. ...

    ASP.NET完全入门

    3.输出参数 ii. 使用触发器 iii. 小结 第四章 内存中的数据库 i. 字段映射 ii. 数据表 iii. 表间关系 iv. 表间约束 v. DataSet和XML 第五章 响应ADO.NET的事件 i. DataSet Events ii. DataTable Events 第...

    Open+CASCADE中文教程

     2、应用框架主要有非几何应用数据和几何学的融汇、模型参数化以及创建图形用户界面的框架(GUI)等特色。  3、提供CASCADE模型输入输出功能和标准版的数据交换功能,如IGES和STEP。由于OCC技术是一个开源的软件...

    C程序设计语言(第2版·新版中文)

    《C程序设计语言》(第2版新版)原著即为C语言的设计者之一Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以此书为...

    ServUO-master_Ultima_ultimaonline_ServUO_

    ServUO是由社区驱动的用C#编写的Ultima在线服务器仿真器。安装ServUO入门非常容易。视窗只需运行Compile.WIN - Debug.bat并按照提示进行操作即可。该脚本将为您编译服务器二进制文件和Ultima SDK二进制文件,最后为...

    ASP.NET3.5从入门到精通

    16.1.2 ASP.NET AJAX 入门 16.1.3 ASP.NET 2.0 AJAX 16.1.4 ASP.NET 3.5 AJAX 第一篇窗口与界面编程 19 16.1.5 AJAX 简单示例 16.2 ASP.NET 3.5AJAX 控件 16.2.1 脚本管理控件(ScriptManger) 16.2.2 脚本管理控件...

    js入门之Function函数的使用方法【新手必看】

    在javascript里,函数是可以嵌套的。  如:  function(){  funcrion square(x){ return x*x; }  return square(10);   } 在javascript里,将函数绑定给一个对象,用对象... //输出2,传入的参数是两个  }  fu

    SQL注入攻击与防御(安全技术经典译丛)

     8.2.2 .NET(C#)中的参数化语句  8.2.3 PHP中的参数化语句  8.2.4 PL/SQL中的参数化语句  8.3 输入验证  8.3.1 白名单  8.3.2 黑名单  8.3.3 Java中的输入验证  8.3.4 .NET中的输入验证  8.3.5 PHP...

    vc++ 开发实例源码包

    C#的一个网页游览的例子 C++自绘窗体的完整代码 注释非常详细,相信会帮助大家设计好自己的个性窗体。 C++_Primer_第4版_中文+英文 原书源码+课后习题答案。 CameraController(云界面) 实现了自绘控件,云端控制...

    21天学通Oracle

    第一篇 Oracle管理配置 第1章 Oracle安装配置(教学视频:10分钟) 23 1.1 Oracle简介 23 1.1.1 数据库术语 23 1.1.2 主流数据库简介 24 ...第23章 Oracle在C#开发中的应用(教学视频:12分钟) 391

    风越ASP代码生成器2.8

    内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005中直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试...

    网上日记本

    在项目可行性研究的基础之上,我们对系统各项功能进行了初步的分析。 1.1 管理界面登陆 本软件采用的是前台录入方式,所以日记的一切管理无需从后台进入才能进行操作。在前台完成所有操作,这一点我们将在以后的章节...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005中直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试...

Global site tag (gtag.js) - Google Analytics