C#中参数的使用

原创 2004年09月14日 16:22:00

C#中参数的使用

 

C#有四种参数形式,即:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

值参数:不使用任何关键字

引用参数:使用关键字ref

输出参数:使用关键字out

数组参数:使用关键字params

1、值参数

值参数的实际值不会被修改,在参数传递时,实际传递给形参的只是实参的一份拷贝,实参与形参的类型必须一致,至少形参到实参间存在一种隐式类型转换。

2、引用参数

如果需要将实参与形参的变化动态的保持一致,就需要使用引用类型,此时传递的是实参的地址,如果实参值发生变化,则形参也会相应发生变化。

引用类型参数使用关键字ref,但要注意,将变量作为引用类型参数传递前,必须先赋值。

例子:

namespace test_ref

{

     public class testref

     {

          public static int testrefpar(ref int first)

          {

                first=20;

                return 0;

           }

           public static void Main()

           {

                int i=10;

                System.Console.WriteLine("在未使用引用传递前i的值:{0}",i);

                int j=testrefpar(ref i);

                System.Console.WriteLine("使用引用传递时,成员方法的返回值:{0}",j);

                System.Console.WriteLine("使用引用传递时,i的值{0}",i); 

           }

      }          

}

 

3、输出参数

输出参数通过关键字out来定义,这与引用参数有些类似,均不用另外开辟内存区域,不同之处就是在方法调用前,不需要对输出参数的实参进行初始化。输出参数适用于传递成员方法被调用后返回数据的情形。

下面是我写的一个例子:

 

namespace testout

{

      public class test_out

      {

           public static string test_out_par(out string backstring)

           {

                 backstring="这是out成员方法被调用后返的变量值。";

                 return "这是out成员方法的返回值";

            }

           public static void Main()

           {

               string z;//不用进行初始化

               System.Console.WriteLine(test_out_par(out z));//这里输出的是成员方法的返回值

               System.Console.WriteLine(z);

           }

       }

}

 

4、数组参数

需要的参数个数可变或不定时,要使用到数组参数,数组参数通过关键字params来定义,定义数组参数时要注意以下几点:

⑴数组参数必须是方法参数数列表中的最后一个参数。

⑵数组参数必须是一维数组。

⑶不可与refout关键字组合使用。

下面是一个例子:

namespace test_params

{

      public class testpar

      {

          public static int total(params int[] par)

          {

               int sum=0;

              System.Console.Write("要计算的数的个数:{0}个,分别是:",par.Length);

               foreach(int tmp in par)

               {

                    System.Console.Write("{0},",tmp);

                    sum+=tmp;

               }

               System.Console.WriteLine("/n合计:{0}/n",sum);

             return sum;

          }

          public static void <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Main()

          {

               int sum1,sum2,sum3,sum4;

               int[] num={12,4,56,78,34};

               sum1=total(2,5,6,7,22);

               sum2=total(9,38,37,2,3,5,6);

               sum3=total(1,2,3,4,5,6,7,8,9,10);

               sum4=total(num);

               System.Console.WriteLine("/n最终结果:/nsum1={0}/nsum2={1}/nsum3={2}/nsum4={3}",sum1,sum2,sum3,sum4);

          }

      }

}

C#中为何要使用ref参数 (个人理解)

前言 这篇文章并不是想说明,ref的使用或者和out参数的区别等等 而是对C#为什么要放入ref参数给出一些我的个人理解 我也是初学C#,查阅了一些资料给出的个人理解,如果哪里有问题,也欢迎大家不吝赐...
  • luke2834
  • luke2834
  • 2016年01月21日 19:51
  • 788

C#终于支持可选参数了!

今天偶然看了一下C#4.0的新特性, 第一个新特性就令我兴奋不已, 曾经一度令我使用C#很不习惯的"死参数"问题终于搞定了. 实在太爽了! 过去用C++, VB.NET的时候都很爽, 开始用C...
  • linshichen
  • linshichen
  • 2016年10月04日 14:56
  • 825

C#中的Invoke和BeginInvoke方法详解

在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate,至于委托的本质请参考我的另一随笔:对.net事件的看法。   一、为什么Control类提供了Invoke和...
  • startwithdp
  • startwithdp
  • 2015年03月19日 18:23
  • 3430

C#中各种异步操作的方法

C#异步方法
  • Rapheal_jy
  • Rapheal_jy
  • 2016年01月06日 14:00
  • 334

C#开发Unity游戏教程之Unity中方法的参数

C#开发Unity游戏教程之Unity中方法的参数
  • u014621518
  • u014621518
  • 2015年07月09日 09:52
  • 1062

Action<T> 无参数委托详解

C#委托Action、Action、Func、Predicate CLR环境中给我们内置了几个常用委托Action、 Action、Func、Predicate,一般我们要用到委托的时候...
  • u011555996
  • u011555996
  • 2016年08月22日 15:49
  • 1172

C#调用SQL Server参数过程传参

C#调用SQL Server参数过程传参,传参/输出/返回值
  • roy_88
  • roy_88
  • 2015年11月08日 15:57
  • 3259

【C#基础】方法及其调用、构造方法、out与ref参数及其返回值、方法重载、静态方法等简单介绍

一、方法及其调用 1、方法介绍: 1)功能:用来复用代码。当我们在一个程序中反复地写同样的代码,一般情况下,我们可以把需要重复写的代码定义在一个方法中,用的时候只需要调用就行了。 格式:[访问修...
  • qly2046
  • qly2046
  • 2013年12月28日 09:58
  • 2762

C# 基础知识 (三).主子对话框数值传递

在C# winform编程中,我们经常会遇到不同窗口间需要传递数值的问题.比如数据库的应用,主窗口填写内容num1,点击按钮,在弹出的子窗口显示对应num1值;或者在子窗口填写新注册用户名信息,在主窗...
  • xinm1001
  • xinm1001
  • 2016年11月03日 20:28
  • 894

C#命名参数的使用

什么是命名参数? 命名参数(Named Arguments)就是说在调用函数时可以通过指定参数名称的方式来调用参数。它最大的好处就是方便调用参数时按调用者的需要来排列顺序,而不必死守函数声明时的顺序...
  • qiaoquan3
  • qiaoquan3
  • 2016年04月20日 17:17
  • 305
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中参数的使用
举报原因:
原因补充:

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