C#——函数的参数

原创 2012年03月21日 20:44:09

函数的参数

 

(一)函数的ref、out参数

函数参数默认是值传递的,也就是“复制一份”,也就是“复制一份”,例子:

int age=20;

IncAge(age);

Console.WriteLine("age={0},age");

ref必须先初始化,因为是引用,所以必须先“有”,才能引用,而out则是内部为外部赋值,所以不需要初始化,而且外部初始化也没用。

ref应用场景内部对外部的值进行改变out则是内部为外部变量赋值out一般用在函数有多个返回值的场所

例1:函数参数默认是值传递的,也就是“复制一份”,

namespace refout参数
{
    class Program
    {
        static void Main(string[] args)
        {
            int age = 20;
            IncAge(age);
            Console.WriteLine(age); //20
            Console.ReadKey();
        }
        static void IncAge(int age) //复制了一份,所以IncAge内部改变的是副本。
        {
            age++;
        }
    }
}

 

例2:参数前加ref,因为是引用,外部参数必须先要初始化。

namespace ref参数
{
    class Program
    {
        static void Main(string[] args)
        {
            int age = 20;               //ref是引用,外部参数必须先要初始化(赋值)
            IncAge(ref age);
            Console.WriteLine(age);     //21
            Console.ReadKey();
        }
        static void IncAge(ref int age) //ref:内部对外部参数的改变
        {
            age++;
        }
    }
}


 

例3:out:内部为外部变量赋值,内部参数要赋值,外部参数不需要初始化,而且外部初始化也没用.。

namespace out参数
{
    class Program
    {
        static void Main(string[] args)
        {
            //int age = 20;     //out外部参数不需要初始化,而且外部初始化也没用.
            int age;
            IncAge(out age);
            Console.WriteLine(age);        //31
            Console.ReadKey();
        }
        static void IncAge(out int age)    //out:内部为外部变量赋值
        {
            age = 30;          //out内部参数要赋值
            age++;
        }
    }
}


例4:交换两个变量的值

namespace ref应用场景
{
    class Program
    {
        static void Main(string[] args)
        {
            int i1 = 10;
            int i2 = 20;
            Swap(ref i1, ref i2);
            Console.WriteLine("i1={0},i2={1}", i1, i2);
            Console.ReadKey();
        }
        //两个变量的交换
        static void Swap(ref int i1, ref int i2)  //内部的改变用ref
        {
            int temp = i1;
            i1 = i2;
            i2 = temp;
        }
    }
}


ref应用场景:内部对外部的值进行改变ref应用场景:内部对外部的值进行改变ref应用场景:内部对外部的值进行改变ref的应用场景:内部对外部的值进行改变

例5:数字型的字符串转变为数据类型的数字

namespace out应用场景
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = Console.ReadLine();
            int i;
            if (int.TryParse(str, out i))  //一般一个函数只能有一个返回值,若一个函数要有多个返回值,要用out
            {
                Console.WriteLine("转换成功!{0}", i);
            }
            else
            {
                Console.WriteLine("数据错误");
            }
            Console.ReadKey();
        }
    }
}


一般一个函数只能有一个返回值若一个函数要有多个返回值,要用out,这就是out的应用场景。        

 二、函数的可变参数 ——params

可变参数:参数的个数可以动态增加的,在参数前面加params关键字。

此部分的内容在我的博客:《C#——函数》中的部分函数的参数有详细的说明,在此不再赘述。

 

其博客的链接: <http://blog.csdn.net/haiyan_cf/article/details/7358031>

 

最后,函数参数的总结:

 

确定函数参数的原则自己能确定的数据自己内部解决,自己确定不了的数据通过参数传递。

C#中函数的参数前可加关键字(ref,out,params),也可以不加关键字(称为“默认参数”)。

 

函数参数默认是值传递的,也就是“复制一份”。

 

参数前加ref ,out和params 的区别:

 

区  别:

params 关键字是可变参数的标志,参数的个数可以动态增加的

out内参赋值,out一般用在函数有多个返回值的场所

ref外参赋值,内部对外部的值进行改变

相同点:

外部和内部参数前要同时加、减 ref、out,前后要保持一致性。

 

 

 

 

 

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

将Lambda表达式作为参数传递并解析——在构造函数参数列表中使用Lambda表达式(C#)

话不多说,先上代码: public class DemoClass { /// /// 通过Lambda表达式,在构造函数中赋初始值 /// /// /...

C# main函数详解及参数应用

main函数: C# Main函数的概念是什么呢?C# Main()是C#应用程序的入口点,执行这个函数就是执行应用程序。也就是说,在执行过程开始时,会执行Main()函数,在Main()函数执行完...
  • koself
  • koself
  • 2012-08-29 16:24
  • 12532

C#编程.函数.参数

详细内容请参见《C#入门经典(第4版)》 C#允许喂函数指定一个(只能指定一个)特定的参数,这个参数必须是函数定义中的最后的一个参数,称为参数数组。参数数组可以使用个数不定的参数调用函数,它可以使用p...

C# 函数参数传递(按值和引用)讲解

先来说下C#中的数据类型.分值类型和引用类型两大类.   值类型:直接存储数据的值,保存在内存中的stack(堆栈)中 引用类型:存储对值的引用,实际上存储的就是一个内存的地址.引用类型的保存分...

转一篇关于c# string.Compare() 函数中那个comparisonType参数的文章

原文链接 http://developer.51cto.com/art/201001/175935.htm .NET Framework作为一个开发环境给编程人员带来了非常大的好处。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)