设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 8058|回复: 2
打印 上一主题 下一主题

快速学习C#-第四天使用out关键字传出参数值

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-24 02:07:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在C#中使用变量必须对其初始化,在使用ref关键字进行引用传递时也是如何。有的时候这种赋值没有任何意义,因为在传递ref参数时ref参数在方法中已经被修改了,那么之前对其赋值也就不存在了。这时候C#使用out关键字可以解决这个问题其意义为“输出参数”。同样在方法中已经赋值,并且必须被赋值,不需要在调用方法前对out参数初始化。
使用OUT传递参数值:不需要在调用方法前对out方法初始化
示例如下:

using System;
namespace class_4
{
    //快速学习C#-第四天使用out关键字传出参数值
    //在C#中使用变量必须对其初始化,在使用ref关键字进行引用传递时也是如何。有的时候这种赋值没有任何意义,
    //因为在传递ref参数时ref参数在方法中已经被修改了,那么之前对其赋值也就不存在了。
    //这时候C#使用out关键字可以解决这个问题
    //其意义为“输出参数”。同样在方法中已经赋值,并且必须被赋值,不只要在调用方法前对out参数初始化。
    class Program
    {
        public class student //定义类
        {
            public string strName;//属性姓名:
            public int nAge;//属性年龄
            //public int numTotalPerson;//总人数
            public student(string _strName, int _nAge) //构造函数使用两个参数姓名_strName和年龄_nAge
            {
                strName = _strName;
                nAge = _nAge;
                //++numTotalPerson;//每增加一个学生总人数+1
            }
            public void addAge(int _nAge1, out int _nAge2)
            {
                nAge += _nAge1;
                _nAge2 = nAge;
            }
        }
        class class1
        {
            static void Main(string[] args)
            {
                student s = new student("新思考", 1);
                int _nAge2; //不需要初始化
                s.addAge(1, out _nAge2);
                Console.WriteLine("姓名:{0},年龄{1}岁", s.strName, s.nAge);
            }
        }
    }
}
问题思考

我们可以考虑这样一个问题:使用out关键字传递参数值实现每增加一个学生学生总数+1
下面是我自己思考的一种方法,但是同样存在很多疑问.
疑问一:一般针对类的属性称之为静态属性,那么获得所有学生人数的信息就应该属于静态属性,而我所写的示例B并没有用到静态.那么示例B是否合理,如果合理是用静态属性好还是不用更好?我暂时没有找到最为合理的答案,所以我希望和大家相互讨论,让我们更好的理解和学习C#...
示例B

using System;
namespace class_5
{
    class class1
    {
        public class student
        {
            public string strName;//姓名
            public int numTotal;//总人数
            public student(string _strName)
            {
                strName = _strName; //每增加一个人,总人数+1
                ++numTotal;
            }
            public void addStudent(int _numTotal, out int _numTotal1)
            {
                numTotal += _numTotal;
                _numTotal1 = numTotal;
            }
        }
        static void Main()
        {
            Console.WriteLine("请输入学生总数量:");
            int numPersonTotal = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("输入一位学生:");
            string newAddName=Console.ReadLine().ToString();
            student s = new student("newAddName");
            int _numTotal2;
            //s.numTotal = 20; //默认学生人数为20人
            s.addStudent(numPersonTotal, out _numTotal2);
            Console.WriteLine("共有学生人数{0}名",s.numTotal);
        }
    }
}
思考时刻进行中...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 07:46 , Processed in 0.069334 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

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