| publicclassTester { publicstaticvoidMain() { //创建类的实例 Testert=newTester(); //调用非静态成员 //(mustbethroughaninstance) t.Run(); } //演示调用ToString的非静态方法 publicvoidRun() { EmployeemyEmployee=newEmployee(); CountermyCounter=newCounter(12); Console.WriteLine("Theemployee:{0},thecountervalue:{1}", myEmployee,myCounter); intmyInt=5; Console.WriteLine("Herearetwointegers:{0}and{1}",17,myInt); } } |
引用型参数和输出型参数
与C++中相同,C#中的方法也只能有一个返回值。在C++中,我们通过将指针或索引作为参数而克服了这个限制,被调用的方法改变其中的参数,调用方法就可以得到新的值了。 向方法中传递一个索引作为参数时,只能严格地按传递索引或指针所能够提供的方式访问原来的对象。对于值类型变量而言,就不能采用这种方法了。如果要通过引用型参数传递值型变量,就需要在其前面加上ref关健字。如下所示:
| publicvoidGetStats(refintage,refintID,refintyearsServed) |
需要注意的是,既需要在方法的定义中使用ref关健字,也需要在对方法的实际调用中使用ref关健字。
| Fred.GetStats(refage,refID,refyearsServed); |
现在,我们可以在调用方法中定义age、ID和yearsServed变量,并将它们传递给GetStats,得到改变后的值。 C#要求明确的赋值,也就是说,在调用GetStats方法之前,必须对age、ID和yearsServed这三个局部变量进行初始化,这一工作似乎有点多余,因为我们仅仅使用它们从GetStats中得到新的变量的值。为了解决这一问题,C#提供了out关健字,表示我们可以向方法中传递没有被初始化的变量,这些变量将通过引用变量的方式进行传递:
| publicvoidGetStats(outintage,outintID,outintyearsServed) |
当然了,调用方法也必须作出相应的变化:
| Fred.GetStats(outage,outID,outyearsServed); |
|