控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

C#参数传递方式及使用情境

作者:佚名 出处:互联网 2011年11月09日 阅读:

C#参数传递方式及使用情境

一、        参数的一般传递方式

在c#中,除非使用ref或者out前缀,所有参数都通过值来传递。变量的栈数据会完整复制到目标参数中。分为以下3种情况:

1、 引用类型的变量只包含对象所在的内存地址,将要复制的是内存地址而不是对象本身,所以对底层对象的修改会保留。如果在方法内部将内存地址指向一个新对象,则方法结束后在方法中所作的修改会被丢弃(原指针仍指向原对象,方法参数指向新对象,结束后一起销毁)。

class Program
{
    static void Main(string[] args)
    {
        Employee myE = new Employee() { id=4};
        Console.WriteLine("初始化为:"+myE.id);
        testMethod(myE);
        Console.WriteLine("退出方法后:"+myE.id);
        Console.ReadLine();
    }
    static void testMethod(Employee myE)
    {
        //myE.id = 5;
        myE = new Employee() { id = 5 };
        Console.WriteLine("更改为:"+myE.id);
    }
}
class Employee
{
    public int id { get; set; }
}

2、 值类型对象包含的是实际数据,传递给方法的是数据本身的副本,对值类型对象的修改在方法结束后会被丢弃。

3、 String类型在实际使用中当做值类型对待。

二、        参数的特殊传递方式

1、 ref参数

作用:迫使值参数通过引用传送给方法。

2、 out参数

作用:在参数未初始化的情况下,在一个函数中输出多个值。隐含ref。

C#要求变量在被引用前必须初始化。尽管在传递前,可以用没有意义的值初始化他们,然后用ref引用传递,但有时会引起混乱。用out可以使参数在未初始化情况下使用,逻辑性更强。

3、 params数量可变参数

作用:自动把参数转为数组。

调用方法有两种,见示例。

static string Combine(params string[] paths)
{
    string result = string.Empty;
    foreach (string path in paths)
    {
        result = System.IO.Path.Combine(result, path);
    }
    return result;}static void test()
{
    //调用方法1,直接输入,如果不使用params前缀就不能用这种方式
    string path1 = Combine("", "", "");
    //调用方法2,string数组,不使用params前缀也能用这种方式
    string path2 = Combine(new string[] {"","","" });
}

三、        传递参数注意事项:

 

1、 属性不是变量,因此不能传给 out 或ref参数

2、 除非使用out前缀,所有参数必须在使用前初始化。

3、 out参数必须在函数结束前赋值,赋值null也可以。

 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统