Class1.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Class1 { private string name; public Class1(string name) { // 使用this关键字表明使用当前对象的属性(或方法),后面的name是形参name this.name = name; } public void Eat() { Console.WriteLine("名字:" + this.name); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // 使用类 Class1 myname = new Class1("namejr"); myname.Eat(); } } }
使用ref关键字进行引用传参
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int age = 4; // 关键字ref按引用传参 Growth(ref age); Console.WriteLine(age); } // 该static是int类型的++,相当于值类型 static void Growth(ref int age) { age++; Console.WriteLine("int又长大一岁!!!"); } } }
使用out关键字做引用传递
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int age = 4; // 关键字out按引用传参 // out可以返回多个属性值,而return只能返回一个 int prev_a, next_a; // 用来接收上一年和下一年的年龄 Growth(age, out prev_a, out next_a); Console.WriteLine("上一年的年龄:" + prev_a); Console.WriteLine("明年的年龄:" + next_a); } // 使用out关键字,也用来做引用传递 static void Growth(int age, out int prevage, out int nextage) { prevage = age - 1; nextage = age + 1; } } }
值得注意的是:ref、out都是引用传递,使用的方法在值传递的前面加上ref/out即可;在使用ref前必须对ref所引用的变量进行赋值,否则会报错,out可以不在引用前赋值,但必须在离开方法前赋值。
修改:
关于值传递和引用传递:https://www.cnblogs.com/namejr/p/10261486.html