- 博客(14)
- 收藏
- 关注
原创 常量和字段
必须在编译时确定。确定后编译器将常量值保存到程序集元数据中。这意味这只能定义编译器识别的基元类型。C#允许定义非基元类型的常量变量前提是值为Null常量总是被视为静态成员。定义常量将导致创建元数据常量不能很好的支持跨程序集版本控制(不能传引用,获取地址)MaxE的值是50,所以会将int32值50嵌入应用程序的IL代码。事实上生成应用程序集之后,运行时根本不会加载DLL程序集,可以把它从硬盘上删除。如果要是把MaxE改成100那么需要重新生成程序集。
2025-01-21 03:37:47
226
原创 类型和成员基础(1)——《CLR via Csharp》
无论什么编程语言,编译器必须能处理源代码,为上述每种成员生成元数据和IL代码。所有编程语言生成元数据格式完全一致。这正是CLR成为“公共语言运行时”的原因。元数据是所有语言都生成和使用的公共信息。正是有了元数据用一种语言写的代码才能无缝访问另一种语言写的代码。类型可见性。
2024-11-16 02:16:07
477
原创 《CLR via C#》对象的同一性和等一性,哈希码
重写Equals要符合相对性的四个特征1.Equals必须自反2.Equals必须对称3.Equals必须可传递4.Equals必须一致重写Equals时还需要做下面几件事。
2024-09-28 02:37:42
730
原创 《CLR via C#》引用类型和值类型——基础学习
值类型主要优势是不作为对象在托管堆分配。和引用类型比值类型也有局限性。下面列出一些区别1.值类型有两种表达形式“已装箱”和“未装箱”,引用类型总处于已装箱形式2.值类型从System.ValueType派生。该类型提供了和Object相同的方法。但是System.ValueType重写了Equal方法,能在两个对象字段完全匹配的前提下返回True,在、此外还重写了GetHashCode方法。生成哈希码时,这个重写方法所用的算法会将对象实例字段中的值考虑在类。3.不应在值类型中引入任何新的虚方法。
2024-09-25 00:49:09
803
原创 《CLR via C#》基元类型——基础学习
编译器直接支持的类型称为基元类型。基元类型直接映射到Framework类库中存在的类型,例如C#的int直接映射到System.Int32类型。以下代码均为正确只要是符合CLS规范的类型都有基元类型可以认为C#自动假定所有源码文件都添加了C#语言规范规定最好使用关键字,而不是使用完整的系统名称。但是某些角度用这句话不是正确的。理由如下:1.许多人纠结String还是string。由于C#的string直接映射到System.String(FCL类型),所以两者没有区别。
2024-09-23 01:44:28
1111
原创 Unity自带编辑器扩展
现在可以使用Unity自带的可视化工具建立窗口了,注意的是如果要使用更加复杂的功能可以点击根目录,选Editor Extension Authoring按钮可以解锁更多功能窗口。想做好看整齐的样式右上角可以选择新建USS文件类似与html和css的关系。保存uxml文件后(就是做的可视化窗口)开始代码部分。首先需要新建一个Editor文件夹,如果编辑器扩展的文件未放入文件夹会导致Unity无法编译,使功能失效。(打开路径:Window/UI Tookit/UI Bulider)然后点击上方菜单即可使用。
2024-06-01 13:25:17
440
原创 unity导出Excel表格(只需代码操作)
先建立特殊文件夹StreamingAssets,该文件夹功能是储存文件防止打包损坏,将Excel表格放入文件夹(Excel格式保存为CSV结构)这就是用文件流操作读取Excel表格的方法。
2024-02-25 16:33:21
1489
原创 C#容器操作——Stack(栈)
/ 声明一个栈//压栈(增加元素)//栈没有删除的概念只有取//取出元素//查看//栈只能看顶端的内容//查看元素是否在栈中//栈无法改只能弹栈或者压栈//遍历//把栈转化为Object数组y++)//循环弹栈打印//清除。
2024-02-06 03:52:47
317
1
原创 C#的容器操作——ArrayList
Arraylist本质是一个Object类的数组进行操作,存在拆箱装箱对内存消耗大所以一般情况下不建议使用Arraylist。
2024-02-06 02:17:24
222
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅