自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 [C#复习向整合]值和引用类型2

一.基础回顾值类型:无符号: byte ushort uint ulong有符号: sbyte short int long浮点数: float double decimal特殊: char bool枚举: enum结构体: struct引用类型:string 数组 类 接口 委托值类型和引用类型的本质区别:值类型的具体内容存在栈内存上.引用类型的具体内容存在堆内存上.二.如何判断值类型和引用类型按F12进内部查看,class是引用,str

2021-08-19 11:20:39 133

原创 [C#复习向整合]特殊语法

一.var隐式类型var是一种特殊变量类型,可以表示任何类型变量.var只能用于临时变量的声明,不能作为类成员.也就是一般写在函数语句块中.var必须初始化.static void Main(string[] args){ var i = 5; var s = "str"; var list = new List<int>();}可以用于不确定类型变量.二.设置对象初始值声明对象时,可以通过直接写大括号的形式初始化公共成员变量和属性

2021-08-18 23:21:25 174

原创 [C#复习向整合]迭代器

一.概念迭代器(iterator)又称光标(cursor),是程序设计的软件设计模式.迭代器提供了一个方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的标识.从表现效果上来看,迭代器是可以在容器对象上遍历访问的接口.设计人员无需关心容器对象的内存分配的实现细节.可以用foreach遍历的类,都是实现了迭代器的.二.标准迭代器的实现方法命名空间System.Collections关键接口 IEnumerator, IEnumerable可以通过同时继承两者实现

2021-08-18 09:14:36 144

原创 [C#复习向整合]特性

目录一.特性概念二.自定义特性三.特性的使用四.限制自定义特性的使用范围五.系统自带特性六.系统自带特性 - 调用者信息特性七.系统自带特性 - 条件编译特性八.系统自带特性 - 外部dll包函数特性一.特性概念特性是一种允许我们向程序的程序集添加元数据的语言结构.是用于保存程序结构信息的某种特殊类型的类.特性提供功能强大的方法以将声明信息与C#代码(类型,方法,属性等)相关联.特性与程序实体关联后,即可在运行时使用反射查询特性信息.特性的目的是告

2021-08-17 23:18:10 119

原创 [C#复习向整合]反射 -Assembly与Activator

一.Activator用于快速实例化对象的类,用于将Type对象快捷实例化为对象先写一个测试类class Test{ private int i = 1; public int j = 0; public string str = "123"; public Test() { } public Test(int i) { this.i = i; } public Test(int i, stri

2021-08-16 22:10:57 422

原创 [C#复习向整合]反射 - Type

一.程序集程序集是经由编译器编译得到的,供进一步编译执行的那个中间产物.在windows系统中,它一般表现后缀为 .dll(库文件), 或者是 .exe(可执行文件)的格式程序集就是我们写的一个代码集合,我们现在写的所有代码,最终都会被编译器翻译为一个程序集供别人使用,比如dll或exe运行vs里的代码,会在bin->debug->netcoreapp3.1 生成文件二.元数据用来表述数据的数据.程序中的类,类中的函数,变量等等可以称为程序的元数据有关程.

2021-08-16 21:22:12 240

原创 [C#复习向整合]预处理器指令

一.编译器将源语言翻译为目标语言的程序.源语言程序: 某种程序设计语言写成的程序,如C#,C++等目标语言程序: 二进制表示的伪机器代码写的程序二.预处理器指令指导编译器在实际编译开始之前对信息进行预处理以#开头,因为预处理器指令不是语句,所以不用分号结尾目前常用的折叠代码块就是预处理器指令.三.常见预处理器指令1. #define, #undef写在脚本文件最前面(开头)//定义一个YYDS符号#define YYDS//取消定义#undef Y

2021-08-16 14:18:06 138

原创 [C#复习向整合]多线程

一.进程打开了一个应用程序就是在操作系统上开启了一个进程进程之间可以相互独立运行,互不干扰进程之间也可以相互访问,操作.编程就是在制作进程二.线程操作系统能够进行运算调度的最小单位它被包含在进程之中,是进程中的实际运作单位一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程运行进程就是运行了进程里的线程管道,编程就是在线程里编写三.多线程可以通过代码开启新的线程可以同时运行代码的多条管道就叫多线程线程可以相互独立,也可以相互访问..

2021-08-12 10:02:00 234 1

原创 [C#复习向整合]协变逆变

一.概念协变:和谐的变化如里氏替换原则中的父类装子类,用object类装string逆变:逆常规的变化如父类变子类,object变string协变和逆变是用来修饰泛型的协变out逆变in用于泛型中修饰泛型字母,只有泛型接口和泛型委托能用二.作用用out修饰的泛型只能作为返回值用in修饰的泛型只能作为参数//用out修饰的泛型不能作为参数//delegate T TestOut<out T>(T t);//错误!用out修饰的

2021-08-11 09:28:07 58

原创 [C#复习向整合]List排序

一.list自带排序方法需要命名空间System.Collections.Generic只能排序系统类中,继承了排序接口的类型(比如int32)List<int> _list = new List<int>();//乱序添加_list.Add(1);_list.Add(3);_list.Add(2);_list.Add(7);_list.Add(4);_list.Add(6);_list.Add(5);//排序_list.Sort();//默认升

2021-08-11 08:59:26 144

原创 [C#复习向整合]Lambda表达式

一.概念可以将lambda表达式理解为匿名函数的简写除了写法不同,使用上和匿名函数一样,都是配合委托或事件使用.二.语法(参数列表) =>{ //函数体}//对比匿名函数delegate(参数列表){ //函数体}三.使用//无参无返回//但不能直接这样使用,要结合事件委托//() =>//{// Console.WriteLine("无参无返回");//}Action a =() => { Console

2021-08-09 21:19:22 122

原创 [C#复习向整合]匿名函数

资料来源<唐老狮C#教程>

2021-08-06 22:40:23 189

原创 [C#复习向整合]事件

一.本质事件是基于委托的存在,委托的安全包裹,让委托更具有安全性.事件是一种特使的变量类型.二.使用语法:访问修饰符 event 委托类型 事件名与委托的区别: 不能在类外部赋值,调用.它只能作为成员存在与类和接口以及结构体内.class Test{ public Action myFun;//委托成员变量 //在委托前面加event public event Action myEvent;//事件成员变量 public Test()

2021-08-03 22:15:19 83

原创 [C#复习向整合]委托

一.本质委托的本质是一个雷,用来定义函数的类型,是函数的容器.不同函数必须对应和各自"格式"一致的委托.二.基础语法关键字:delegate访问修饰符 delegate 返回值 委托名(参数列表);简单记忆则是:没用函数体的函数,在返回值前加一个delegate.通常将委托写在namespace语句块中.在类中作为成员变量使用.委托还可以作为函数的参数.此时可以在委托执行前,在函数内做一些操作,再执行委托里的函数.三.定义自定义委托修饰符默认publicpubl

2021-08-02 09:29:44 66

原创 [C#复习向整合]泛型栈和队列

需要命名空间System.Collections.Generic使用泛型可以减少装箱拆箱,而且若泛型类型为object,则泛型栈队列可以完全取代普通栈队列.Stack<int> _s = new Stack<int>();Queue<object> _q = new Queue<object>();在其内部方法与使用上,与Stack和Queue一样.可参考文章:C# StackC# Queue资料来源<唐老狮C

2021-08-02 08:33:07 182

原创 [计算机图形学入门]16.Monte Carlo Path Tracing

一.Monte Carlo Integration作用:给定一个函数,计算其定积分在b-a区间内均匀采样xi,用xi * f(xi)作为面积值,将所有面积值相加求平均.对于不普遍情况的非均匀采样(p(x)为概率密度函数,均匀采样则概率密度1/(b-a))要求:要是定义在x上的积分.采样越多误差越小二.path tracing(注意区别Ray tracing)whitted-style ray tracing 认为物体表面反射沿镜面反射方向,若对于粗糙物体,则...

2021-07-31 17:00:05 400

原创 [计算机图形学入门]15.概率论

一.随机变量可以取很多任意值的变量二.随机分布变量取某些值有大概率,取某些值是小概率. - 例:骰子的六个随机变量1,2,3,4,5,6骰子的随机分布p(1)=p(2)=p(3)=p(4)=p(5)=p(6)三.概率概率都是非负且不大于一的.所有变量概率和为1.四.期望不断地取变量,对结果求平均.(变量x对应概率)积分求和=期望 -例: 骰子的期望:1/6+2/6...

2021-07-31 14:33:45 273

原创 [C#复习向整合]LinkedList

本质:可变类型的泛型双向链表声明需要命名空间System.Collections.GenericLinkedList<int> _list = new LinkedList<int>();增_list.AddLast(10);//往链表尾部添加10_list.AddFirst(20);//往表头添加20删_list.RemoveFirst();//移除头节点_list.RemoveLast();//移除尾节点_list.Remove(

2021-07-29 20:31:00 570

原创 [C#复习向整合]顺序存储和链式存储

一.常用数据结构:数组,栈.队列,链表,树,图,堆,散列表(哈希)二.线性表ArrayList,Stack,Queue,链表.顺序存储和链式存储是数据结构中两种存储结构三.顺序存储数组,Stack,Queue,List,ArrayList.用一组地址连续的单元一次存储线性表的各个数据元素.四.链式存储单向链表,双向链表,循环链表用一组任意的存储单元存储各个数据元素自己实习一个单向链表class LinkedNode<T>{.

2021-07-29 09:30:51 415

原创 [C#复习向整合]Dictionary

本质是拥有泛型的hashtable,基于键值对,由hashtable的object变成泛型.不可以有相同的键声明需要命名空间System.Collections.GenericDictionary<int,string> dic = new Dictionary<int,string>();增dic.Add(1,"hello");dic.Add(3,"world");删除只能通过键删除,删除不存在的键没反应dic.Remove(3

2021-07-28 22:33:46 100

原创 [C#复习向整合]List

本质是可变类型的泛型数组声明需要命名空间System.Collections.GenericList<int> _list = new List<int>();List<string> _list2 = new List<string>();增加List<int> _list = new List<int>();_list.Add(1);_list.Add(3);List<int>

2021-07-28 22:20:35 66

原创 [C#复习向整合]泛型约束

概念:让泛型的类型有一定的限制关键字where语法where 泛型字母 : xxx约束泛型是值类型 where T : struct约束泛型是引用类型 where T : class约束泛型要存在无参公共构造函数 where T : new()约束泛型是某个类或其派生类 ...

2021-07-27 09:26:45 69

原创 [C#复习向整合]泛型

泛型实现类型参数化,相当于类型占位符.语法:class 类名<泛型占位字母>interface 接口名<泛型占位字母>返回值 函数名<泛型占位字母>(参数列表)泛型占位字母可以有多个,用逗号分开.class TestClass<T>{ publid T value;//一个类型为T的变量value}//使用时TestClass<int> t = new TestClass<int&gt

2021-07-26 09:16:20 106

原创 [计算机图形学入门]14.BRDF

一.BRDF 双向反射分布函数BRDF能描述一束光反射后,往各个方向反射的能量分布.不同材料可以定义不同BRDF.某个单位立体角的光在物体表面,被吸收转化成能量后,又向外发射.函数:出射点的radiance微分/出射点的irradiance微分对于入射点一个单位面积,可以接收四面八方的光(irradiance),把这些光,利用BRDF函数,可以得到某一特点方向(如相机观察方向)反射的所有颜色,把它们累加可得最后颜色.二.渲染方程rendering equation..

2021-07-24 22:59:29 225

原创 [计算机图形学入门]13.辐射度量学Radiometry

一.Radiant Energy and Flux(Power)-radiant energy是一种能量Q,单位J(焦耳) -类比功-radiant flux(又称power)是单位时间的能量,单位W(瓦特)或者lumen(流明) -类比功率二.radiant intensity(简称intensity)单位立体角的能量点光往单位立体角发射的能量,单位W/sr(sr为立体角单位),单位缩写candela坎迪拉.1.立体角在二维圆,立体角对...

2021-07-24 22:12:35 428

原创 [计算机图形学入门]12.光线追踪(二)

使用AABB加速光追在光追前,我们可以用一些预处理来加速接下来的光线求交:一.uniform grid-找到包围盒-将包围盒分成很多小格子-将有物体表面的小格子标记让光线与小格子求交,避免与整个包围盒求交,若光线进入小格子且小格子标记了有物体表面,则再与物体表面三角形求交.格子划分数量也会影响效率.太疏太密都不好.二.空间划分spatial partitions物体少的地方格子大块,物体密集的地方格子小块细分.八叉树,KD-Tree,BSP-Tree...

2021-07-24 17:26:17 150

原创 [计算机图形学入门]11.光线追踪(一)

为什么要引入光线追踪?-光栅化难以表现全局效果,如软阴影,粗糙反射,间接光照.尤其是光线弹射多次的效果.光栅化很快,但效果低.-光线追踪通常是离线渲染的.定义计算机图形学中的光线(有的理论与实际不相符合,但图形学中这么定义):1.光沿直线传播.2.光线不与其他光线碰撞.3.光从光源传播到人眼,光路是可逆的.光线投射-从观察点,往屏幕上每一个像素发射光线,可能与场景里某点相交,有一个最近交点.-把相交点与光源连线,查看该点是否在阴影-最后把该点颜色计算出,绘制到

2021-07-24 15:52:42 421

原创 [Cg -C for graphic]函数与程序

目录一.函数声明1.数组形参二.函数重载三.入口函数四.Cg标准函数库1.数学函数2.几何函数3.纹理映射函数4.偏导数函数一.函数声明Cg语言的函数申明与C/C++类似1.数组形参由于Cg中没有指针概念,所以当数组作为参数传递到函数时,传递的数组的完整拷贝.数组类型作为形参时,可以一维,也可以多维,可以不用声明数组长度:但如果给形参数组声明了长度,则在调用时,只有同等长度的数组能使用,不同长度则会报错.二.函数...

2021-07-24 11:27:27 157

原创 [C#复习向整合]Hashtable哈希表

一.本质又称散列表,基于键的哈希代码, 键-值提高查询效率.使用键来访问集合中的元素.二.申明头文件System.CollectionsHashtable hast = new Hashtable();三.修改1.增不能出现相同的键!但值可以重复.//键 值的类型都是objecthast.Add(1,"123");//键为1,值为"123"hast.Add("21",2);//键为"21",值为2hast.Add(1,true);//错误!已存在键为1.

2021-07-22 09:32:39 213

原创 [C#复习向整合]Queue队列

一.本质本质object数组.先进先出.二.申明命名空间System.CollectionsQueue que = new Queue();三.使用1.增只能一个一个入队que.Enqueue(1);que.Enqueue("1123");2.取object v = que.Dequeue();//取队首3.查object c = que.Peek();//只查看,不会取出//查看元素是否在队列if(que.Contains(1)){

2021-07-22 08:46:07 216

原创 [C#复习向整合]Stack栈

一.本质本质也是object数组,但无法直接获取数组某个元素.先进后出.二.申明要头文件System.Collections.Stack s = new Stack();三.增删查改1.增压栈,只能一个一个的来s.Push(1);s.Push("123")ls.Push(34.123f);2.取弹栈,弹出栈顶元素.Object o = s.Pop();3.查栈无法查看指定位置元素,栈没有实现索引器.栈只能看栈顶.Object o

2021-07-21 22:42:33 165

原创 [C#复习向整合]ArrayList

一.本质arraylist是C#封装好的类.本质是object类型的数组.arraylist封装好了增删查改的方法.二.申明需要命名空间using System.Collections;ArrayList arr = new ArrayList();三.增删查改1.增ArrayList arr = new ArrayList();arr.Add(1);arr.Add("123");arr.Add(new object());//因为其本质为object

2021-07-21 09:19:31 96

原创 [C#复习向整合]接口

一.概念接口是行为的抽象规范关键字:interface申明规范:不能包含成员变量.只含方法,属性,索引器,事件.成员不能被实现.可以不用写访问修饰符,默认public,但不能是private.接口不能继承类,但可以继承另一个接口.使用规范:类可以继承多个接口.类继承接口后,必须实现接口中所有成员,且public.特点:和类的申明类似.接口是用来继承的.接口不能被实例化,但可以作为容器存储对象(里氏替换).二.接口的申明接口是

2021-07-20 22:56:33 123

原创 [C#复习向整合]抽象类和抽象函数

一.抽象类关键字:abstract特点:不能被实例化可以包含抽象方法继承抽象类必须重写抽象方法abstract class Thing{ public string name;}class Water : Thing{ }//使用时//Thing类不能被实例,但可以用里氏替换原则Thing t = new Water();二.抽象函数又叫纯虚函数关键字:abstract特点:只能在抽象类中申明没有方法体不能是私有的继

2021-07-20 22:21:22 173

原创 [C#复习向整合]多态

一.多态的概念让继承同一父类的子类们,在执行相同方法时有不同的表现.virtualoverridebase简称vob若没有多态的弊端:class Father{ public void SpeakName() { }}class Son : Father{ public new void SpeakName()//重写父类方法,可以不加new,但编译器会提示你 { }}//使用例Father

2021-07-20 08:12:55 57

原创 [C#复习向整合]密封类

一.概念密封类是使用sealed密封关键字修饰的类作用:让类无法被继承二.使用sealed class Father{ //该类不能被继承}三.作用不允许最底层子类被继承.保证代码规范性,安全性.参考资料<唐老狮C#教程>...

2021-07-20 07:54:27 78

原创 [C#复习向整合]object与装箱拆箱

一.object所有类型的基类,是个类,引用类型基于里氏替换原则,用object装所有对象可以用来表示不确定类型,作为函数参数类型.class Son{ public void Speak(){}}//使用时,引用类型常用as转换object o = new Son();if(o is Son){ Son s = o as Son; s.Speak();}object o2 = 1;//装int引用类型//值类型使用时要强转int i = (

2021-07-20 07:49:11 863

原创 [C#复习向整合]继承中的构造函数

1.概念:当申明一个子类对象时,先执行父类构造函数,再执行子类构造函数.父类无参构造很重要.若父类没有无参构造函数,则子类也会报错.因为子类构造时,无法调到父类构造(没有参数传递).可以通过base的用法来避免.子类可以通过this关键字,代表父类,调用父类构造函数.2.继承中构造函数的调用顺序从最底层到高层父类的父类->父类->子类3.通过base调用父类构造可以通过子类调用父类指定构造函数,就可以不用调用父类默认构造无参构造了,父类也就可以没有无参构造

2021-07-19 23:02:32 257

原创 [C#复习向整合]里氏替换原则

1.概念:是面向对象七大原则中最重要的原则.任何父类出现的地方,子类都可以替代.父类容器可以装子类对象.子类容器不能装父类.2.用法 class GameObject { } class Player : GameObject { public void PlayerFunc() { } } class Boos : GameObject { } cl

2021-07-19 22:44:19 195

原创 [C#复习向整合]继承的基本规则

1概念:一个类A继承一个类B,则A会继承B的所有成员.能访问public,protected(外部不能访问)private只有自己类能访问.被继承的类称为父类,基类;继承的类称为子类,派生类.子类可以有自己的成员.2.特点:1.C#中子类只能继承一个父类2.子类可以间接继承父类的父类,注意区别多个父类,不是多个父类.3.语法class 类 : 父类{} class Teacher { public string name

2021-07-19 22:14:09 295

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除