码迷,mamicode.com
首页 > Windows程序 > 详细

C#--方法的参数类型

时间:2015-05-17 15:01:15      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

在C#中,方法的参数类型有四种:

  • 值类型
  • 引用类型
  • 输出类型
  • 数组型参数

值参数:

所谓值参数,就是利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并将此拷贝传递给该方法,这样做的结果就是被调用的方法不会修改实参的值,保证了实际值的安全,在调用方法时,如果形参的类型时值类型的话,必须保证实参的类型也是值类型的数据.

例子:

public class MyClass
{
    public MyClass()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }


    public void ChangeValue(string value)
    {
        value = "Value is Changed!";
    }
}

-------------------------------------

string value = "Value";
Response.Write(value+"<br/>");

MyClass mc = new MyClass();
mc.ChangeValue(value);

Response.Write(value);

 

效果:

技术分享

引用参数:

使用ref关键字可以使参数按照引用传递.在需要传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中,若使用ref关键字,则在方法定义和调用方法时都必须显式使用ref关键字.

注意ref的使用!

例子:

public class MyClass
{
    public MyClass()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }


    public void ChangeValue(ref string value)
    {
        value = "Value is Changed!";
    }
}

-----------------------------

        string value = "Value";
        Response.Write(value+"<br/>");

        MyClass mc = new MyClass();
        mc.ChangeValue(ref value);

        Response.Write(value);

 

效果:

技术分享

输出参数:

使用out关键字来进行引用传递,这和ref关键字很累世,不同之处在于ref要求变量必须在传递之前就进行初始化,若使用out关键字,则方法定义和调用时都必须显式的使用out关键字.

例子:

public class MyClass
{
    public MyClass()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }


    public void ChangeValue(out string value)
    {
        value = "Value is Changed!";
    }
}

---------------------------------

        string value ;

        MyClass mc = new MyClass();
        mc.ChangeValue(out value);

        Response.Write(value);

 

效果:

技术分享

数组型参数:

数组型参数就是声明params关键字,用于指定在参数数目可变处采用参数的方法参数.

在方法声明中的params关键字之后不允许任何其他参数,并且在方法声明中只允许一个params关键字.

例子:

public class MyClass
{
    public MyClass()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }


    public void ChangeValue(params string[] value)
    {
        foreach (string s in value)
        {
            HttpContext.Current.Response.Write(s + "<br/>");
        }
    }
}

------------------------------------------

        string value1 = "Value1";
        string value2 = "Value2";

        MyClass mc = new MyClass();
        mc.ChangeValue(value1, value2);

 

效果:

技术分享

 

另:

数组类型的参数:

数组类型是引用类型的数据,所以也应归类于引用类型.

public class MyClass
{
    public MyClass()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }

    public void ChangeValue(string[] value)
    {
        value[0] = "This is Value0,Changed!";
    }
}

----------------------------------------------

        string[] value = { "Value1", "Value2" };
        Response.Write(value[0] + "<br/>");

        MyClass mc = new MyClass();
        mc.ChangeValue(value);

        Response.Write(value[0] + "<br/>");

 

 

效果:

技术分享

 

注意:

ref和out的区别:

传递到ref参数的参数必须最先初始化,而out的参数在传递之前不必初始化.

C#--方法的参数类型

标签:

原文地址:http://www.cnblogs.com/loveYN/p/4509694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!