|
在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);
}
}
}
思考时刻进行中... |
|