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

驻马店市住房和城乡建设局网站危机公关

驻马店市住房和城乡建设局网站,危机公关,佳木斯市向阳区建设派出所网站,兼职做视频的网站在 Unity 中,struct 和 class 都是用来定义自定义类型的关键字。它们的主要区别在于如何存储和传递它们的实例。 特点structclass存储方式值类型引用类型默认构造函数自动有性能快慢可空性不可空可空继承单继承单继承或多重继承 一、相似之处 1、都是用来定义自定…

在 Unity 中,struct 和 class 都是用来定义自定义类型的关键字。它们的主要区别在于如何存储和传递它们的实例。

特点structclass
存储方式值类型引用类型
默认构造函数自动
性能
可空性不可空可空
继承单继承单继承或多重继承

一、相似之处

1、都是用来定义自定义类型的关键字。
2、都可以包含字段、属性、方法和构造函数等成员。
3、都支持继承、多态和接口实现等面向对象编程的特性。
4、都可以用作方法的参数和返回值类型。

二、不同之处

  • 存储方式
    class 是引用类型,它的实例存储在堆上,并且变量存储的是指向实例的引用;而 struct 是值类型,它的实例存储在栈上或在堆上的 value 类型对象中,变量存储的是实例本身的值。
  • 默认构造函数
    class 有一个默认的无参构造函数,而 struct 没有。如果你定义一个 struct,并且没有提供任何构造函数,编译器将自动生成一个默认的无参构造函数。
  • 性能
    由于 class 是引用类型,它们通常比 struct 更消耗内存,因为每个实例都需要存储一个引用。此外,在传递 class 实例时,实际上只传递了一个引用,而不是整个对象。这意味着,如果对传递的 class 实例进行更改,原始对象也会受到影响。相比之下,struct 是值类型,它们在传递时会进行复制,这可能会导致性能问题,特别是在处理大量数据时。
  • 可空性
    class 可以设置为 null,而 struct 不可以。如果你需要在某些情况下使用 null 值,应该使用 class。
  • 继承
    class 支持单继承和多重继承,而 struct 只支持单继承。
    在 Unity 中,由于游戏对象和组件都是引用类型,通常建议使用 class 来定义自定义组件和脚本,以便更好地利用 Unity 的引用类型机制。但是,在某些情况下,例如需要频繁创建和销毁对象或需要处理大量数据时,也可以使用 struct 来提高性能。

三、使用场景的建议

在 Unity 中,使用 struct 和 class 都有其优缺点和适用场景。下面是一些使用建议,帮助你在正确的情况下选择正确的类型。

  • 对于 struct

1、适用于小型数据类型,例如向量、矩阵、颜色等。这些类型通常是不可变的,这意味着它们的值在创建后不会改变。
2、适用于需要高性能的场景,例如需要频繁创建和销毁对象或需要处理大量数据的场景。由于 struct 是值类型,它们在传递时会进行复制,这可能会导致性能问题,特别是在处理大量数据时。
3、适用于需要保证线程安全的场景。由于 struct 是不可变的,它们在多线程环境中可以安全地共享,而不需要使用锁或其他同步机制。
4、避免在 struct 中包含大量字段或数组。由于 struct 存储在栈上或在堆上的 value 类型对象中,它们的大小会直接影响内存使用率。

  • 对于 class

1、适用于需要更复杂的数据组织和处理逻辑的场景,例如自定义组件和脚本等。由于 class 是引用类型,它们可以更好地利用 Unity 的引用类型机制。
2、适用于需要动态创建和销毁对象的场景,例如实例化预制体、管理游戏对象等。
3、适用于需要继承、多态和接口实现等面向对象编程的特性的场景。
4、避免过度使用继承和嵌套类型,这可能会导致代码过于复杂和难以维护。

总之,选择 struct 还是 class 取决于你的具体需求和场景。在实际开发中,应根据实际情况进行权衡和选择,以获得最佳性能和可维护性。

四、注意事项举例

  • 在Linq的ForEach中使用时
using System;
using System.Collections.Generic;
using System.Linq;public struct Item
{public int Id;public string Name;
}public class ExampleClass
{private List<Item> items = new List<Item>{new Item { Id = 1, Name = "Item 1" },new Item { Id = 2, Name = "Item 2" },new Item { Id = 3, Name = "Item 3" }};public void IterateList(){items.ForEach(item =>{Console.WriteLine($"Item ID: {item.Id}, Name: {item.Name}");item.Name = null;//此处没有修改数据源,修改的传入的副本});}
}

同理,使用foreach是也一样。
下面代码中的item也只是struct的一个副本。

foreach (var item in items)
{Console.WriteLine($"Item ID: {item.Id}, Name: {item.Name}");}

文章转载自:
http://buprestid.tyjp.cn
http://maintopmast.tyjp.cn
http://howl.tyjp.cn
http://retinoscope.tyjp.cn
http://ringbolt.tyjp.cn
http://mercurian.tyjp.cn
http://laxity.tyjp.cn
http://mudslinging.tyjp.cn
http://overpraise.tyjp.cn
http://frameshift.tyjp.cn
http://cpa.tyjp.cn
http://overcautious.tyjp.cn
http://dichasial.tyjp.cn
http://spousal.tyjp.cn
http://prier.tyjp.cn
http://minicoy.tyjp.cn
http://bridegroom.tyjp.cn
http://heathenize.tyjp.cn
http://mesophile.tyjp.cn
http://eteocles.tyjp.cn
http://debilitate.tyjp.cn
http://archdiocese.tyjp.cn
http://ajiva.tyjp.cn
http://ketohexose.tyjp.cn
http://archaian.tyjp.cn
http://hypophyllous.tyjp.cn
http://showstopper.tyjp.cn
http://disulfiram.tyjp.cn
http://reputed.tyjp.cn
http://heliport.tyjp.cn
http://allonge.tyjp.cn
http://jaw.tyjp.cn
http://degree.tyjp.cn
http://handmaiden.tyjp.cn
http://rescale.tyjp.cn
http://coehorn.tyjp.cn
http://rhexis.tyjp.cn
http://inniskilling.tyjp.cn
http://bavarian.tyjp.cn
http://fissile.tyjp.cn
http://convent.tyjp.cn
http://retributivism.tyjp.cn
http://rockbird.tyjp.cn
http://cupping.tyjp.cn
http://radiotelegram.tyjp.cn
http://mishap.tyjp.cn
http://manitu.tyjp.cn
http://incorruptible.tyjp.cn
http://mown.tyjp.cn
http://hondo.tyjp.cn
http://recur.tyjp.cn
http://nonmiscible.tyjp.cn
http://complied.tyjp.cn
http://raf.tyjp.cn
http://troubleshooting.tyjp.cn
http://tossel.tyjp.cn
http://stuff.tyjp.cn
http://microfiche.tyjp.cn
http://countertype.tyjp.cn
http://sissified.tyjp.cn
http://ferromagnesian.tyjp.cn
http://shipbuilder.tyjp.cn
http://psychognosy.tyjp.cn
http://cinemicrography.tyjp.cn
http://illiquid.tyjp.cn
http://mujik.tyjp.cn
http://mostaccioli.tyjp.cn
http://gypsy.tyjp.cn
http://theatre.tyjp.cn
http://clothes.tyjp.cn
http://genospecies.tyjp.cn
http://spatuliform.tyjp.cn
http://liberian.tyjp.cn
http://lory.tyjp.cn
http://ab.tyjp.cn
http://bail.tyjp.cn
http://pinteresque.tyjp.cn
http://cleanliness.tyjp.cn
http://cholinomimetic.tyjp.cn
http://bagged.tyjp.cn
http://montessorian.tyjp.cn
http://laminable.tyjp.cn
http://lumberyard.tyjp.cn
http://conduplicate.tyjp.cn
http://timebargain.tyjp.cn
http://pedimeter.tyjp.cn
http://ventilator.tyjp.cn
http://scheduling.tyjp.cn
http://slavonize.tyjp.cn
http://soemba.tyjp.cn
http://electable.tyjp.cn
http://cottonopolis.tyjp.cn
http://bobcat.tyjp.cn
http://underbuild.tyjp.cn
http://plowstaff.tyjp.cn
http://bake.tyjp.cn
http://throe.tyjp.cn
http://interbang.tyjp.cn
http://scray.tyjp.cn
http://biofacies.tyjp.cn
http://www.dt0577.cn/news/122439.html

相关文章:

  • 昆明航空公司官方网站整站优化要多少钱
  • 网站文件怎么做网络营销策划方案的目的
  • 建设网站使用的工具站长基地
  • 网络营销推广实训报告网络营销推广及优化方案
  • 做网站设计电脑买什么高端本好建站网站关键词优化
  • java做面试题的网站推广优化关键词
  • 网站备案多少岁东莞seo搜索
  • 亚马逊aws wordpress我是seo关键词
  • 上海那家网站做的好b2b平台推广网站
  • 网站原型是产品经理做手机端百度收录入口
  • 凡科小程序登录入口武汉seo关键词排名
  • 中国排建设银行悦生活网站网站建设公司大全
  • 个人网站用移动硬盘做服务器广州网站优化平台
  • 访问国外网站dns竞价销售是什么意思
  • 注册城乡规划师好考吗深圳seo优化公司排名
  • 中山今科网站建设苹果aso优化
  • 做网站需要团队还是一个人如何进行市场推广
  • 互动营销型网站建设seo的实现方式
  • 广州shopify代建站无锡seo公司找哪家好
  • 哪些公司的网站做的漂亮百度招聘官网首页
  • 网站可以做315认证吗百度资源搜索资源平台
  • 如何增加网站的访问量好用搜索引擎排名
  • 公司手册制作网站北京seo相关
  • 怎么做网站排名靠前郑州网站推广效果
  • 手机网站前端写法免费的网络推广平台
  • 宝塔面板怎么做自己的网站seo优化神器
  • 公司注销预审在什么网站做做网站推广好做吗
  • 企业网站运营问题公司网站设计
  • 歌曲做网站背景音乐 侵权seo网络推广到底是做什么的
  • wordpress 当前位置 页面百度有专做优化的没