百度医疗网站建设音乐网站如何建设的
2026/1/12 0:41:02 网站建设 项目流程
百度医疗网站建设,音乐网站如何建设的,wordpress theme free,网站建设推广新业务C#中值类型和引用类型参数传递的区别 1. C#中的参数传递机制 在C#中#xff0c;参数传递主要分为两种情况#xff1a; 值类型传递 #xff1a;传递的是变量的副本#xff0c;方法内的修改不会影响原始变量。引用类型传递 #xff1a;传递的是对象引用的副本#xff0c;方…C#中值类型和引用类型参数传递的区别1. C#中的参数传递机制在C#中参数传递主要分为两种情况值类型传递 传递的是变量的副本方法内的修改不会影响原始变量。引用类型传递 传递的是对象引用的副本方法内对对象属性的修改会影响原始对象。普通函数参数传递的区别主要取决于参数的类型如果参数是值类型 如int、struct等方法内的修改不会影响原始变量。如果参数是引用类型 如class、interface等方法内对对象属性的修改会影响原始对象。示例usingSystem;namespaceParamPassingDemo{// 引用类型类classPerson{publicstringName{get;set;}publicintAge{get;set;}publicoverridestringToString(){return$Person{{Name{Name}, Age{Age}}};}}// 值类型结构体structPoint{publicintX{get;set;}publicintY{get;set;}publicoverridestringToString(){return$Point{{X{X}, Y{Y}}};}}classProgram{// 修改引用类型参数的方法staticvoidModifyPerson(Personperson){// 直接修改引用指向的对象的属性person.NameModified Alice;person.Age30;Console.WriteLine($ModifyPerson方法内:{person});}// 修改值类型参数的方法staticvoidModifyPoint(Pointpoint){// 修改的是副本的属性point.X100;point.Y200;Console.WriteLine($ModifyPoint方法内:{point});}// 创建新对象并赋值给引用参数staticvoidReplacePerson(Personperson){// 创建新对象并赋值给参数修改的是参数指向的引用personnewPerson{NameNew Person,Age40};Console.WriteLine($ReplacePerson方法内:{person});}// 使用ref关键字传递值类型staticvoidModifyPointRef(refPointpoint){// 修改的是原始对象的属性point.X100;point.Y200;Console.WriteLine($ModifyPointRef方法内:{point});}staticvoidMain(string[]args){Console.WriteLine( C# 参数传递演示 );Console.WriteLine();// 1. 引用类型参数传递Console.WriteLine(1. 引用类型(类)参数传递:);PersonalicenewPerson{NameAlice,Age25};Console.WriteLine($调用前:{alice});ModifyPerson(alice);Console.WriteLine($调用后:{alice});Console.WriteLine(结论: 引用类型参数传递时方法内对对象的修改会影响原始对象);Console.WriteLine();// 2. 值类型参数传递Console.WriteLine(2. 值类型(结构体)参数传递:);Pointp1newPoint{X10,Y20};Console.WriteLine($调用前:{p1});ModifyPoint(p1);Console.WriteLine($调用后:{p1});Console.WriteLine(结论: 值类型参数传递时方法内的修改不会影响原始对象);Console.WriteLine();// 3. 替换引用类型参数指向的对象Console.WriteLine(3. 替换引用类型参数指向的对象:);PersonbobnewPerson{NameBob,Age35};Console.WriteLine($调用前:{bob});ReplacePerson(bob);Console.WriteLine($调用后:{bob});Console.WriteLine(结论: 替换参数指向的引用不会影响原始对象);Console.WriteLine();// 4. 使用ref关键字传递值类型Console.WriteLine(4. 使用ref关键字传递值类型:);Pointp2newPoint{X50,Y60};Console.WriteLine($调用前:{p2});ModifyPointRef(refp2);Console.WriteLine($调用后:{p2});Console.WriteLine(结论: 使用ref关键字可以让方法修改原始值类型对象);Console.WriteLine();Console.WriteLine( 总结 );Console.WriteLine(1. 值类型: 默认传递副本方法内修改不影响原始对象);Console.WriteLine(2. 引用类型: 默认传递引用的副本方法内修改对象属性会影响原始对象);Console.WriteLine(3. 替换引用: 修改参数指向的引用不会影响原始对象);Console.WriteLine(4. ref关键字: 可以让方法直接修改原始参数);}}}运行结果C# 参数传递演示 1. 引用类型(类)参数传递: 调用前: Person{NameAlice,Age25}ModifyPerson方法内: Person{NameModified Alice,Age30}调用后: Person{NameModified Alice,Age30}结论: 引用类型参数传递时方法内对对象的修改会影响原始对象2. 值类型(结构体)参数传递: 调用前: Point{X10,Y20}ModifyPoint方法内: Point{X100,Y200}调用后: Point{X10,Y20}结论: 值类型参数传递时方法内的修改不会影响原始对象3. 替换引用类型参数指向的对象: 调用前: Person{NameBob,Age35}ReplacePerson方法内: Person{NameNew Person,Age40}调用后: Person{NameBob,Age35}结论: 替换参数指向的引用不会影响原始对象4. 使用ref关键字传递值类型: 调用前: Point{X50,Y60}ModifyPointRef方法内: Point{X100,Y200}调用后: Point{X100,Y200}结论: 使用ref关键字可以让方法修改原始值类型对象总结1. 值类型: 默认传递副本方法内修改不影响原始对象2. 引用类型: 默认传递引用的副本方法内修改对象属性会影响原始对象3. 替换引用: 修改参数指向的引用不会影响原始对象4. ref关键字: 可以让方法直接修改原始参数

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询