找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 6720|回复: 3

快速学习C#-第三天:使用ref关键字进行引用传递

[复制链接]
发表于 2009-11-24 02:06:53 | 显示全部楼层 |阅读模式 IP:江苏扬州
关于ref进行引用传递的示例1
使用ref进行引用传递需要注意:传递到 ref 参数的参数必须最先初始化.但是out 的参数在传递之前不需要显式初始化我们明天分析研究out 的参数传递
示例1
using System;
namespace class_3
{
    //方法的参数 是调用方法时传递给它的变量,主要分两类。
    //(1)传递数据值:直接把变量的数据值传递给方法。
    //(2)传递数据地址:把变量的内存地址传递给方法。
    //使用ref关键字进行引用传递,ref关键字放在需要传递的变量前面,把一个输出参数的内存地址传递给方法,在方法中对变量做的任何修改也保留下来。
    //使用ref方法,可以在调用一个方法时改变多个变量的值,解决了一个方法只能返回一个值的限制
    //示例 使用ref关键字进行引用传递
    public class student
    {
        public string name; //姓名
        public int age;      //年龄
        public student(string _name, int _age) //构造函数
        {
            name = _name;
            age = _age;
        
        }

        //长大_nSpan岁
        //定义了学生类的一个方法,使其长大_nSpan岁,并把长大的后的岁数保存在另一个引用参数_nOutCurrentAge中。
        //这时便可以体现引用传递的作用了。在方法调用完毕后,变量_nOutCurrentAge中会保存当前年龄值。
        public void Grow(int _nSpan, ref int _nOutCurrentAge)
            
        {
            age += _nSpan;
            _nOutCurrentAge = age;
        }
    }
    class class1
    {
        static void Main()
        {
            student s=new student("张三",25);
            int nCurrentAge = 0;             //在调用Grow方法之前,需要定义一个变量,并且必须进行初始化,否则会报错
            s.Grow(3, ref nCurrentAge);
            Console.WriteLine(s.name);
            Console.WriteLine(s.age);
        }
   
    }
   
}
思考与回顾
上面的例子中 名字name与年龄age都是公用属性,如果将它们换成私有属性private将如何访问呢?我们可以使用第一天学习的c#方法,或者使用get() set()函数
示例2 使用方法
   public class student
    {
        public string name;//公有属性
        private int age;//私有属性
        public student(string _name, int _age) //构造函数
        {
            name = _name;
            age = _age;
        }
        public int aage() //方法
        {
            return age;
        }
        public void Grow(int _age1, ref int _age2) //定义方法_age1岁并将增加的岁数保存到_age2
        {
            age += _age1;
            _age2 = this.age;
        }
    }
    class Class2
    {
        static void Main()
        {
            student s = new student("小张", 25);
            int age2 = 0;
            s.Grow(3, ref age2);
            Console.WriteLine(s.name);
            Console.WriteLine(s.aage()); //s,aage()
        }
    }
示例2 使用get()与set()
只需要将
        public int aage() //方法
        {
            return age;
        }
换成
        public int aage
        {
            get
            {
                return age;
            }
            set
            {
                age = aage;
            }
        }
学习的过程非常漫长,而且是看的多记的少,记的多会的少,如果我们能在学习新知识的同时复习旧知识,并把曾经学过的应用到新知识中,我相信会加深我们的体会与理解,思考是学习的最佳途径,所以我们不应该墨守成规,应该不断创新不断思考,不断进步...
发表于 2010-2-28 17:05:08 | 显示全部楼层 IP:澳大利亚
不要见一个爱一个,爱的太多,你的爱就要贬值。
回复

使用道具 举报

发表于 2010-3-19 10:05:03 | 显示全部楼层 IP:马来西亚
ding~~~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 17:38 , Processed in 0.382055 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表