`
netxdiy
  • 浏览: 715151 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

c#学习体会:使用 ref 和 out 传递数组(downmoon)

 
阅读更多

c#学习体会:使用 ref 和 out 传递数组(downmoon),希望与大家分享
1、与所有的 out 参数一样,在使用数组类型的 out 参数前必须先为其赋值,即必须由接受方 为其赋值。例如:

public static void MyMethod( out int []arr)
... {
arr
= new int [ 10 ]; // 数组arr的明确委派
}


2、与所有的 ref 参数一样,数组类型的 ref 参数必须由调用方 明确赋值。因此不需要由接受方明确赋值。可以将数组类型的 ref 参数更改为调用的结果。例如,可以为数组赋以 null 值,或将其初始化为另一个数组。例如:

public static void MyMethod( ref int []arr)
... {
arr
= new int [ 10 ]; // arr初始化为一个新的数组
}


下面的两个示例说明 out 和 ref 在将数组传递给方法上的用法差异。

示例 1
在此例中,在调用方(Main 方法)中声明数组 myArray,并在 FillArray 方法中初始化此数组。然后将数组元素返回调用方并显示。

using System;
class TestOut
... {
static public void FillArray( out int []myArray)
... {
// 初始化数组(必须):
myArray = new int [ 5 ] ... { 1 , 2 , 3 , 4 , 5 } ;
}


static public void Main()
... {
int []myArray; // 初始化数组(不是必须的!)

// 传递数组给(使用out方式的)调用方:
FillArray( out myArray);

// 显示数组元素
Console.WriteLine( " 数组元素是: " );
for ( int i = 0 ;i < myArray.Length;i ++ )
Console.WriteLine(myArray[i]);
}

}


输出
数组元素是:
1
2
3
4
5
示例 2
在此例中,在调用方(Main 方法)中初始化数组 myArray,并通过使用 ref 参数将其传递给 FillArray 方法。在 FillArray 方法中更新某些数组元素。然后将数组元素返回调用方并显示。

using System;
class TestRef
... {
public static void FillArray( ref int []arr)
... {
// 根据需要创建一新的数组(不是必须的)
if (arr == null )
arr
= new int [ 10 ];
// 否则填充数组,就可以了
arr[ 0 ] = 123 ;
arr[
4 ] = 1024 ;
}


static public void Main()
... {
// 初始化数组:
int []myArray = ... { 1 , 2 , 3 , 4 , 5 } ;

// 使用ref传递数组:
FillArray( ref myArray);

// 显示更新后的数组元素:
Console.WriteLine( " 数组元素是: " );
for ( int i = 0 ;i < myArray.Length;i ++ )
Console.WriteLine(myArray[i]);
}

}


输出
数组元素是:
123
2
3
4
1024

分享到:
评论

相关推荐

    c#分页源码

    通用分页控件c#源码(downmoon收集) 采用工厂模式,提供标准化接口!支持 DataGrid 及 Repeater分页使用方法:新建两个解决方案 一为Pager,一为webtest 下载后请将两个解决方案合并一下,即新的解决方案包括两个...

    W3C网页检验演示程序(C#版)

    在某种程度上,有了它,我们再也不用为不能全面及时检测众多浏览器和五花八门的js/css不兼容性而痛不欲生了。^-^。 这是一个基于该服务的C#版本的API类库演示程序。 详细请看这里: ...

    分享一个改进版的仿MSN/QQ弹出窗口(C#)

    标题中的“分享一个改进版的仿MSN/QQ弹出窗口(C#)”表明这是一个关于使用C#编程语言开发的,模仿MSN和QQ聊天软件弹出窗口功能的程序。这个程序允许开发者自定义弹出窗口的外观、内容和链接,以适应不同应用场景的...

    让MessageBox弹出在当前窗体的中央(C#)

    WinForm中默认的MessageBox默认的弹出位置在屏幕的center,而且没有属性可以修改它,所以在当前活动窗体不在中央时,将会出现,弹出的MessageBox的错位。本代码实现MessageBox在当前窗体中央显示。

    MSDN Webcast - ASP.NET AJAX深入浅出系列课程(15):使用ASP.NET AJAX提供的Authentication Service

    讲座内容: Authentication Service是ASP.NET AJAX提供的另一个Application Service,能够让我们以AJAX方式来使用用户登录等功能。本次课程主要讲述如何来使用Authentication Service。

    获取远程网页的内容之一(downmoon原创)

    ### 获取远程网页的内容之一 ...综上所述,通过以上知识点的学习,我们不仅了解了如何使用 C# 获取远程网页内容的基本方法,同时也意识到了在网络环境复杂多变的情况下,灵活调整程序逻辑的重要性。

    如果你有了基础,你该看看它(.net)

    “downmoon的博客”可能是指压缩包内包含的是一个个人博客的全部内容,这个博客可能详细记录了作者在.NET和Web开发方面的学习过程、实践经验或者是技术分享。 综合以上信息,我们可以预想这份压缩包可能包含以下...

    获取远程网页的内容之二(downmoon原创)

    ### 获取远程网页的内容之二(downmoon原创) #### 概述 本文主要介绍了在特定代理环境下,如何通过编程方式获取远程网页的内容。该方法适用于那些需要通过代理服务器访问互联网的企业或机构环境。文章中提供了...

    在IE中调用javascript打开Excel的代码(downmoon原作)

    - 由于安全性和兼容性原因,使用ActiveX对象仅限于Internet Explorer,并且需要确保用户已正确配置了浏览器的安全设置。 - 在现代Web开发中,推荐使用更安全、跨平台的技术来实现类似功能,如WebAPI、服务器端脚本...

    sqlserver 存储过程中的top+变量使用分析(downmoon)

    为了解决这个问题,开发者转换了`@intCounter`和`@lngUserID`为字符串类型(`varchar(10)`),然后使用`sp_executesql`动态SQL函数来执行包含变量的SQL语句。这样做的原因是`sp_executesql`允许在运行时构建和执行...

    asp.net中获取远程网页的内容之一(downmoon原创)

    在ASP.NET中,可以使用HttpWebRequest和HttpWebResponse来获取远程网页的内容。下面是一个示例代码: ```csharp public string GetRequestString(string strUrl, int timeout, int enterType, Encoding EnCodeType)...

    asp.net下获取远程网页的内容之二(downmoon原创)

    ### ASP.NET 下获取远程网页的内容知识点详解 #### 一、背景与目的 在 Web 开发领域,有时我们需要从远程服务器获取网页内容来进行后续处理...通过学习这些内容,开发者可以更好地理解和实现远程网页内容的抓取功能。

    同时安装vs2005团队开发版和sql 2005企业版的方法(downmoon原作)

    通过以上步骤,你应该能够成功地在同一个开发环境中同时安装并使用VS2005 Team System和SQL Server 2005 Enterprise Edition。如果在安装过程中遇到任何问题,记得查阅微软官方文档或在线社区,获取更多的技术支持和...

    sourcesafe管理phpproj文件的补充说明(downmoon)

    Visual SourceSafe(VSS)是一个曾经广泛使用的版本控制系统,它为开发者提供了一种存储、管理和跟踪源代码文件变更的解决方案。本内容主要讨论的是在使用VSS来管理PHP项目的phpproj文件时遇到的问题以及解决方案的...

    基于vs2010的省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs) 示例源代码

    总的来说,这个示例代码集合涵盖了使用不同JavaScript框架和ASP.NET进行Ajax交互的关键技术,对于学习和理解如何在实际项目中实现省市区三级联动具有很高的参考价值。无论是初学者还是经验丰富的开发者,都能从中...

Global site tag (gtag.js) - Google Analytics