当前位置: 首页 > news >正文

彩票网站开发与建设影视剪辑培训班

彩票网站开发与建设,影视剪辑培训班,杭州竞彩网站开发,郑州网站建设方案服务公司目录 前言参数是值类型的情况1. 按值传递#xff08;Pass by Value#xff09;2. 按引用传递#xff08;Pass by Reference#xff09;使用 ref使用 in 3. 输出参数传递#xff08;Output Parameters#xff09;参数修饰符对比小结 参数是引用类型的情况1. 按值传递类对象… 目录 前言参数是值类型的情况1. 按值传递Pass by Value2. 按引用传递Pass by Reference使用 ref使用 in 3. 输出参数传递Output Parameters参数修饰符对比小结 参数是引用类型的情况1. 按值传递类对象虽然类是引用类型但默认情况下将类对象传递给函数时传递的仍是引用的副本。 2. 按引用传递类对象ref3. 使用 out 参数4. 使用 in 参数小结虽然类是引用类型但默认情况下将类对象传递给函数时传递的仍是引用的副本。 最后一问如果传递的是结构体呢 前言 在C#中函数传参有三种主要的方式按值传递、按引用传递和输出参数传递。每种方式的使用场景和效果都不同下面我将详细讲解这三种方式。 参数是值类型的情况 1. 按值传递Pass by Value 这是最常见的参数传递方式。默认情况下C# 函数的参数是按值传递的。这意味着调用函数时实参的值会被复制到形参因此对形参的修改不会影响实参。 void ModifyValue(int x) {x 10; }int number 5; ModifyValue(number); Console.WriteLine(number); // 输出: 5在这个例子中number 的值并不会因为函数内部的修改而改变因为 x 只是 number 的副本。 2. 按引用传递Pass by Reference 通过使用 ref 或 in 关键字可以按引用传递参数。按引用传递时传递的不是值的副本而是变量本身的引用。函数可以直接修改原始变量的值。 使用 ref ref 关键字允许函数修改传递进来的参数的值并且要求传入的参数必须先初始化。 void ModifyRef(ref int x) {x 10; }int number 5; ModifyRef(ref number); Console.WriteLine(number); // 输出: 10在这个例子中number 的值被函数修改了因为 ref 让参数传递的是引用。 使用 in in 关键字表示按引用传递但参数只能在函数内部读取不能修改。 void ReadValue(in int x) {Console.WriteLine(x);// x 10; // 编译错误不能修改 in 参数 }int number 5; ReadValue(in number);in 参数保证了函数不能修改传递进来的值只能读取。这对于需要高效传递大型数据结构而不希望其被修改时特别有用。 3. 输出参数传递Output Parameters out 关键字允许函数返回多个值或将数据传递回调用者。与 ref 类似out 也是按引用传递的但它不要求变量在传入时已经初始化。函数必须在返回前给 out 参数赋值。 void GetValues(out int x, out int y) {x 10;y 20; }int a, b; GetValues(out a, out b); Console.WriteLine(a); // 输出: 10 Console.WriteLine(b); // 输出: 20在这个例子中a 和 b 的值在函数内部被初始化并返回给调用者。 参数修饰符对比 按值传递默认函数对形参的修改不会影响实参。ref传递引用形参和实参指向同一个变量函数可以修改原始变量。in按引用传递但函数只能读取不可修改。out函数必须对参数赋值用于返回多个值。 小结 C# 提供了灵活的参数传递方式开发者可以根据需求选择是按值传递、按引用传递还是使用 out 进行输出。这些方式为开发高效、安全的代码提供了很大的帮助。 参数是引用类型的情况 和C不同C#的任何class对象都是引用。 在C#中如果传递的是类对象情况会有所不同因为类是引用类型。当你把类对象作为参数传递给函数时不论是按值传递还是按引用传递都会对类对象的行为产生影响。让我们仔细看一下如何处理类对象的传递。 1. 按值传递类对象 虽然类是引用类型但默认情况下将类对象传递给函数时传递的仍是引用的副本。 这意味着函数内部对对象属性的修改将会影响到原始对象因为引用指向的是同一个对象。但如果函数试图重新分配整个对象的引用外部对象则不会受到影响。 class Person {public string Name { get; set; } }void ModifyPerson(Person p) {p.Name Alice; // 修改属性 }Person person new Person { Name Bob }; ModifyPerson(person); Console.WriteLine(person.Name); // 输出: Alice在上面的例子中虽然是按值传递但类对象是引用类型因此 person 和 p 都引用同一个对象修改了 p.Name 也会修改 person.Name。 然而如果在函数内部重新赋值引用外部的对象将不会改变 void ReassignPerson(Person p) {p new Person { Name Charlie }; // 重新分配引用 }Person person new Person { Name Bob }; ReassignPerson(person); Console.WriteLine(person.Name); // 输出: Bob在这个例子中函数内部重新分配了 p 的引用但这不会影响到外部的 person 对象因为传递的引用本身是按值传递的副本。 2. 按引用传递类对象ref 使用 ref 关键字时可以将对象的引用本身传递给函数。这意味着函数可以重新分配对象并让外部变量反映这种变化。 void ReassignPersonRef(ref Person p) {p new Person { Name Charlie }; // 重新分配引用 }Person person new Person { Name Bob }; ReassignPersonRef(ref person); Console.WriteLine(person.Name); // 输出: Charlie在这个例子中函数通过 ref 传递引用因此 person 现在指向新的 Person 对象。 3. 使用 out 参数 out 参数的行为与 ref 类似但要求在函数内部必须对传入的参数赋值。适用于需要从函数返回新的对象或初始化传递进来的对象。 void InitializePerson(out Person p) {p new Person { Name David }; // 必须初始化 }Person person; InitializePerson(out person); Console.WriteLine(person.Name); // 输出: David这里person 是通过 out 参数传递函数内部必须为其分配一个新对象。 4. 使用 in 参数 in 参数用于按引用传递对象但它确保对象的引用在函数内部不能被修改。函数可以读取对象的属性和方法但不能更改引用本身。对于大型对象它可以避免复制操作提高效率。 void ReadPerson(in Person p) {Console.WriteLine(p.Name); // 读取属性是允许的// p new Person(); // 编译错误不能修改引用 }Person person new Person { Name Eva }; ReadPerson(in person);小结 虽然类是引用类型但默认情况下将类对象传递给函数时传递的仍是引用的副本。 如果能理解这句话不管是哪种情况那么思想上就是统一的。 最后一问 如果传递的是结构体呢 在C#中**结构体struct与类class**有一个重要的区别结构体是值类型而类是引用类型。因此如果是结构体请参考 参数是值类型的情况
http://www.hkea.cn/news/14415099/

相关文章:

  • 建站wordpress 基础免费的seo教程
  • 银行的网站怎么做洛阳恒凯做的网站有哪些
  • 网站建设中的安全问题wordpress模板编辑
  • 建设部投诉网站信息流优化师是干什么的
  • 宝安公司网站制作哪家公司好烟台网站设计单位
  • 电子商务网站建设服务小程序appid格式
  • 做网站前端上海企业招聘信息
  • 网站图片翻页怎么做北京建设银行网站首页
  • 网站企业制作做一个代驾小程序要多少钱
  • 网站开发和游戏开发移动网站建设厂家
  • 跨境电商网站建设成本网络规划设计师教程第二版电子书
  • 秀山微信网站建设免费咨询皮肤医生
  • 网站体验步骤wordpress 自定义注册
  • 如何在自己网站添加链接哪里有做网站服务商
  • 做网站可以参考的网站深圳网站设计小程序
  • 美食网站首页怎么做怎么做网页设计的页面
  • 做网站图片大小不合适怎么调西域电商平台官网
  • 超实用网站wordpress添加标签
  • j2ee网站开发免费教程著名的网站制作公司
  • 南通市建设监理协会网站小县城做婚礼网站
  • 织梦网站创建商品栏目太原推广型网站建设
  • 承德网站开发公司wordpress图片和相册
  • 厦门小微企业网站建设补贴企业网站源码生成
  • 手机如果做网站做网站接私活
  • 长沙外贸企业网站建设做公司简介的开源网站
  • 做手机网站版面做多宽关于网站得精神文明建设
  • 怎么去掉网站首页尾缀广州企业500强名单
  • 网站推广的一般流程是企业网企业网站制作
  • 常熟市住房和城乡建设部网站做音响网站
  • 深圳金融投资网站建设企业宣传片报价明细