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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 迷你卡卡 中级黑马   /  2013-10-22 19:40  /  1526 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 迷你卡卡 于 2013-10-22 20:36 编辑

求教C#中ref和out这两个关键字一般在什么时候使用?是不是这两个关键字有时可以通用啊,ref引用传递,但是到底是怎么传递的啊,传递的是什么

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

3 个回复

倒序浏览
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace test12
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             //值传递变引用传递
  12.             int x = 20, y = 30;
  13.             swap(x, y);
  14.             Console.WriteLine("x={0},y={1}",x,y);           
  15.             swap(ref x, ref y);
  16.             Console.WriteLine("x={0},y={1}", x, y);
  17.             Console.ReadKey();
  18.         }
  19.         static void swap(ref int x,ref int y)
  20.         {
  21.             int temp = x;
  22.             x = y;
  23.             y = temp;
  24.         }
  25.         static void swap(int x,int y)
  26.         {
  27.             int temp = x;
  28.             x = y;
  29.             y = temp;
  30.         }
  31.     }
  32. }
复制代码
out 需要从方法中获取多个返回值用,调用函数的时候它不需要赋初值哦,函数退出前一定要给out参赋值哦

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
        static void Main(string[] args)
        {
            //登陆  除了返回true或者false之外,还要返回一条登陆信息。
            Console.WriteLine("请输入一个用户名");
            string name = Console.ReadLine();
            Console.WriteLine("请输入一个密码");
            string pwd = Console.ReadLine();
            string str ;
            bool b = IsLogin(name, pwd, out str);
            Console.WriteLine("登陆结果:{0}",b);
            Console.WriteLine("登陆信息:{0}",str);
            Console.ReadKey();
        }
public static bool IsLogin(string name, string pwd, out string msg)
        {
            bool isLogin = false;
            if (name == "admin" && pwd == "888888")
            {
                isLogin = true;
                msg = "登陆成功";
            }
            else if (name == "admin")
            {
                msg = "密码错误";
            }
            else if (pwd == "888888")
            {
                msg = "用户名错误";
            }
            else
            {
                msg = "未知错误";
            }
            return isLogin;
        }
ref上层代码已经说明,out参数是多个返回值,IsLogin()方法主返回值是bool类型值;使用out传参还可以多返回一个传入的类型,注意:在方法体内部必须每个分支都要给out参数的赋值,如果不赋值或有分支程序赋不到值,程序会报错

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
孙健 发表于 2013-10-22 20:14
static void Main(string[] args)
        {
            //登陆  除了返回true或者false之外,还 ...

呵呵,代码说的很清楚呢,多写了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马