读书笔记
文章平均质量分 72
记录本人工作之余读过的书籍
Destory(this)
这个作者很懒,什么都没留下…
展开
-
24.5.19 《CLR via C#》 笔记11
第十四章 字符、字符串和文本处理.NET Framework中字符总是表示成16位Unicode代码值,Char类型提供两个公共只读常量字段MaxValue(\0)和MinValue(\uffff)数值类型与Char的转换强制类型转换(效率高),C#中可以指定checked或unchecked使用System.Convert,转换以checked方式执行使用IConvertible接口(效率最差),例:ToChar,ToInt32StringString派生自Object是引用类型,原创 2024-05-19 16:29:43 · 668 阅读 · 0 评论 -
24.3.24 《CLR via C#》 笔记10
第十三章 接口类和接口继承CLR不支持多继承,因此所有托管编程语言都不支持任何类都从且只能从一个类派生(最终从Object类派生)定义接口实际只是对一组方法进行了统一的命名,类通过指定接口名称来继承接口,且必须显式实现接口方法接口可以定义方法、事件、无参属性和有参属性(索引器);不能定义构造器方法、实例字段C#中使用interface关键字定义接口;根据约定,接口类型名称以I开头接口可以从另一个或多个接口”继承“,例:IC继承IA和IB,则继承IC的类也要实现IA和IB中定义的方法,该原创 2024-03-24 12:50:51 · 439 阅读 · 0 评论 -
24.3.1 《CLR via C#》 笔记9
使用泛型类型并指定形参时,实际是定义一个新的类型(从泛型类型派生自的类型派生)。例:定义了class SomeClass<T>, 类中的方法可以使用类指定的T,如定义public T SomeMethod<T>()属性、索引器、事件、操作符方法、构造器、终结器本身不能有类型参数,但是可以在泛型类中定义,从而使用泛型类的类型参数。C#编译器在调用泛型方法时可以进行类型推断,在可以确定类型实参的情况下可以不用<>指定。泛型方法,定义泛型类、结构或接口时,类中定义的方法可以使用类指定的类型参数。原创 2024-03-01 22:07:28 · 957 阅读 · 0 评论 -
23.12.15 《CLR via C#》 笔记8
要引发事件时,类及派生类的代码调用该方法(如果有对象登记了对事件的关注,那么通知那些对象)以event关键字定义,需要指定访问性(一般一定是public),委托类型和名称。(事件模式要求sender为Object类型,参数名为e,返回类型为void)使用-=操作符注销对象对事件的关注(内部被翻译成remove_XXX方法)使用+=操作符登记对象对事件的关注(内部被翻译成add_XXX方法)定义不要附加数据的事件时,可直接使用EventArgs.Empty。即在合适时机,调用虚方法通知关注了事件的对象。原创 2023-12-15 22:57:25 · 470 阅读 · 0 评论 -
23.12.9 《CLR via C#》 笔记7
简单的get和set代码,JIT编译器会将代码内联(将代码直接编译到调用它的方法中),基本没有性能损失(编译好的方法会变大,但是访问器的代码一般来说比较少)可以为get和set设置不同的可访问性(一般get-public,set-protected);使用params关键字(只能应用于最后一个参数),指定一个数组容纳不定数量的实参(可以是Object[]以实现任意数量,任意类型的参数)CLR不允许将方法或参数声明为常量(实际上C++中的常量参数也可以通过取地址和强制类型转换绕过常量不可更改的限制)原创 2023-12-09 19:50:21 · 427 阅读 · 0 评论 -
23.10.15 《CLR via C#》 笔记6
第八章 方法实例构造器方法(引用类型)分配内存->初始化附加字段(类型对象指针、同步块索引)->调用类型实例构造器调用实例构造器之前,内存被归零(使没有显示重写的字段获得0或者null值)实例构造器不能被继承一个类型可以定义多个实例构造器;在访问基类的字段前必须先调用基类的构造器在不调用构造器的前提下创建实例:使用Object.MemberwiseClone(初始化附加字段,然后拷贝字节数据到新对象);使用运行时序列化器反序列化对象不要在构造器中调用虚方法(未完成继承层次结构中原创 2023-10-15 14:26:05 · 314 阅读 · 0 评论 -
23.09.5 《CLR via C#》 笔记5
第六章 类型和成员基础类型可以定义0或多个以下成员:常量、字段、实例构造器、类型构造器、方法、操作符重载、转换操作符、属性、事件、类型类型的可见性分为public和internal(默认)C#中,成员的可访问性分为private、protected、internal、protected internal、public;接口类型的所有成员必须是public;重写成员可访问性必须一致;从基类派生时可以放宽限制(不能收紧)静态类(永远不会实例化)要用static关键字定义(C#),必须从Object派生原创 2023-09-05 22:14:07 · 777 阅读 · 0 评论 -
23.04.05 《CLR via C#》 笔记3
第四章 类型基础所有类型隐式继承System.Objectpublic方法:Equals;GetHashCode(如果类型需要作为键使用,需要重写该方法);ToString;GetTypeprotected方法:MemberwiseClone;Finalize所有对象都用new操作符创建计算类型和所有基类型字段成员的字节数,以及对象的额外成员(类型对象指针、同步块索引)从堆中分配需要的字节数(内存),置为0初始化对象的类型对象指针、同步块索引调用类型的构造器(构造器中调用基类构造器原创 2023-04-05 21:40:46 · 249 阅读 · 0 评论 -
23.03.21 《CLR via C#》 笔记2
CLR via C#读书笔记原创 2023-03-21 21:25:49 · 254 阅读 · 0 评论 -
23.03.05 《CLR via C#》 笔记 1
《CLR via C#》第一章读书笔记原创 2023-03-05 00:19:25 · 282 阅读 · 0 评论 -
22.03.01 《Unity 2018 Shaders and Effects Cookbook》笔记Chapter10-11
10.Gameplay and Screen Effects老电影效果Sepia tone 棕褐色调通过叠加颜色获得fixed lum = dot (fixed3(0.299, 0.587, 0.114), renderTex.rgb); fixed4 finalColor = lum + lerp(_SepiaColor, _SepiaColor + fixed4(0.1f,0.1f,0.1f,1.0f), _RandomValue); finalColor = pow(finalCo原创 2022-03-01 22:22:58 · 3237 阅读 · 0 评论 -
22.02.20 《Unity 2018 Shaders and Effects Cookbook》笔记Chapter8-9
8.Mobile Shader Adjustment变量类型优化——使用更少的内存float 32位;half 16位;fixed 11位在复杂的三角函数和指数函数中,float是必要的half只有三位的精度fixed可以用于照明计算、颜色或纹理在法线贴图和漫反射纹理上共享同一个UV数据(在Input结构中就可以删除一个UV的变量)在#pragma语句中声明noforwardadd物体每个像素的光照只能从单个方向光中获取,其他光线被强制按照逐顶点的光照处理(这个值来自Unit原创 2022-02-20 21:00:35 · 2322 阅读 · 0 评论 -
22.01.23 《Unity 2018 Shaders and Effects Cookbook》笔记Chapter7
7.Fragment Shaders and Grab Passesvertex and fragment shader对光照如何影响物体表面不感兴趣,不受物理限制,对非真实感的效果很好使用#pragma指令来关联两个函数#pragma vertex vert#pragma fragment frag往往使用vertInput和vertOutput结构体做参数传递,Unity负责初始化输入,我们负责初始化输出(结构体的每个字段都使用绑定语义)绑定语义允许我们用绑定语原创 2022-01-23 21:27:35 · 2417 阅读 · 0 评论 -
21.12.27 《Unity 2018 Shaders and Effects Cookbook》笔记Chapter6
6.Vertex Functions取顶点颜色:顶点实际上也可以包含颜色信息(默认材质一般不会显示),在vert()函数中可以从appdata_full中提取出来,并在surf()函数中使用它定义input结构 struct Input { float2 uv_MainTex; float4 vertColor; };在vert()函数中提取void vert(inout appdata_full v, out Input o){UNITY_INITIALIZE_OUTPUT(In原创 2021-12-27 23:06:42 · 2135 阅读 · 0 评论 -
21.11.29 《Unity 2018 Shaders and Effects Cookbook》笔记Chapter5
5.Physically-Based RenderingUnity实现PBR的两种方式使用新的光照模型(标准材质Standard、Standard(Specular setup)),强制执行物理学原理(能量守恒(energy conservation)、微表面散射(microsuface scattering)、菲涅尔反射(fresnel reflectance)、表面遮挡(surface occlusion))等全局光源(global illumination/GL),模拟基于物理的光线传输(t原创 2021-11-29 22:17:52 · 3017 阅读 · 0 评论 -
21.11.25 《Unity 2018 Shaders and Effects Cookbook》笔记Chapter4
4.Lighting Models自定义光照模型(custom lighting model)改变#pragma指令为:#pragma surface surf LightingModelName创建一个名为Lighting + LightingModelName的函数例:指令为【#pragma surface surf SimpleLambert】,创建对应函数【LightingSimpleLambert()】当两向量点积为0时(求点积函数dot()),两向量成90°角(正交)原创 2021-11-25 22:40:36 · 3047 阅读 · 0 评论 -
21.10.27 《Unity 2018 Shaders and Effects Cookbook》笔记Chapter1-3
1.Post Processing Stack安装在Package Manager里找到 Post Processing使用在相机所在的物体上,添加组件Post-process Layer,将其Layer属性改为PostProcessing右键创建物体3D Object - Post-process Volume,将该物体的Layer改为PostProcessing在Assets中创建Post-process Profile,为Volume的Profile属性赋值设置is Gl原创 2021-10-27 09:45:12 · 1244 阅读 · 0 评论