A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一叶一花 中级黑马   /  2014-2-15 15:43  /  1081 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 一叶一花 于 2014-2-15 22:10 编辑

最好能够举例说明一下

2 个回复

倒序浏览
1. 引用型参数,以ref修饰符声明;
using System;
class Test
{
     static void Swap(ref int x, ref int y)
   {
     int temp = x;
     x = y;
     y = temp;
   }
   static void Main()
   {
       int i=33,j=44;
       Swap(ref i, ref j);
       Console.WriteLine("i={0},j={1}",i,j);
   }
}
//////////////////////////////////////////////////////////////////////
编译上述代码,程序将输出:
  i=2,j=1
//////////////////////////////////////////////////////////////////////

2. 输出参数,以out修饰符声明;
using System;
calss Test
{
      static void SplitPath(string path,out string dir,out string name)
      {
            int i =path.Length;
            while(i>0)
            {
                   char ch = path[i-1];
                   if(ch=='\\'||ch'/'||ch==':')
                          break;
                   i--;
            }
            dir = path.Substring(0,i);
            name = path.Substring(i);
    }
    static void Main()
    {
         string dir,name;
         SplitPath("c:\\Windows\\System\\hello.txt",out dir,out name);
         Console.WriteLine(dir);
         Console.WriteLine(name);
   }
}
///////////////////////////////////////////////////////////////////////
程序的输出将会是:
c:\Windows\System\
hello.txt
///////////////////////////////////////////////////////////////////////
注意: 变量dir和name在传递给SplitPath之前并没有初始化,在调用之后它们则有了明确的值。

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1 很给力!

查看全部评分

回复 使用道具 举报
两者都是按地址传递的,使用后都将改变原来的数值。ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以必须初始化一次。

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马