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

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

[复制链接]
发表于 2009-11-24 02:07:26 | 显示全部楼层 |阅读模式 IP:江苏扬州
在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);
        }
    }
}
思考时刻进行中...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 05:27 , Processed in 0.307679 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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