
C#学习
tran119
好好学习,努力向上
展开
-
C# 值类型与引用类型相互嵌套
1,值类型里包含引用类型,如:struct包含class对象。该引用类型将作为值类型的成员变量,堆栈上将保存该成员的引用,而成员的实际数据还是保存在托管堆中.2,引用类型包含值类型,如:class包含int。如果是成员变量,做为引用类型的一部分将分配在托管堆上 。如果是方法里的局部变量,则分配在该段代码的线程栈上 。如下:public class ReceiveTest : Mon...原创 2018-08-03 16:37:23 · 943 阅读 · 0 评论 -
C# 流
文章:https://www.cnblogs.com/ForEvErNoME/archive/2012/09/02/2633876.html 提供了一个类图继承关系文章:https://www.cnblogs.com/supersnowyao/p/8327727.html 一个2进制流读写的封装流:用来进行数据的永久存储和计算机之间传递。几种不同的stram,都继承自抽象的stream类...转载 2018-09-24 23:21:53 · 1728 阅读 · 0 评论 -
C# 按值传递,按引用传递
1,按值传递值按值传递,引用类型按值传递的实质的是传递值,参数为值类型时,“值”为实例本身,因此传递的是实例拷贝,不会对原来的实例产生影响;参数为引用类型时,“值”为对象引用,因此传递的是引用地址拷贝,会改变原来对象的引用指向。string是引用类型,string按值传递的效果与值类型按值传递效果一样,string在这里比较特殊。调用方法发生参数传递时,方法根据参数类型先在stack创建一个...原创 2018-08-03 16:02:31 · 4135 阅读 · 0 评论 -
C# 装箱与拆箱
参考文章 https://www.cnblogs.com/dabiaoge/p/4112581.html值类型转换为引用类型叫装箱,反之就叫拆箱。概念:由于C#中所有的数据类型都是由基类System.Object继承而来的,所以值类型和引用类型的值可以通过操作相互转换,而这转换过程也就是装箱(boxing)和拆箱(unboxing)过程。装箱(Boxing):对值类型的一种操作,在值...原创 2018-08-03 15:32:13 · 2228 阅读 · 0 评论 -
C# 闭包
http://www.cnblogs.com/birdwudi/archive/2010/08/20/1804342.html#top 很好的文章1,闭包其实就是使用的变量已经脱离其作用域,却由于和作用域存在上下文关系,从而可以在当前环境中继续使用的一种函数对象。2,闭包允许你将一些行为封装,将它像一个对象一样传来递去,而且它依然能够访问到原来第一次声明时的上下文。3,使用lambda表示...原创 2018-08-02 19:24:51 · 2172 阅读 · 0 评论 -
C# delegate event Lambda 匿名函数
委托和事件的区别:委托是一个类,该类内部维护着一个字段,指向一个方法。事件可以被看作一个委托类型的变量,通过事件注册、取消多个委托或方法。委托可以在本类或者其他类注册函数,执行函数。事件可以在本类或者其他类注册函数,但只能在本类中执行函数。事件可以更好的封装逻辑,保证耦合度。什么时候使用委托,什么时候使用事件呢?不知道,,,当回调函数只能在本类中执行时,使用事件,这算不算一个?...原创 2018-08-02 19:08:38 · 1377 阅读 · 0 评论 -
C#与数据结构
数据机构有2种描述:逻辑结构,物理结构/存储结构1,逻辑结构:数据之间的相互关系。集合:结构中的数据元素除了同属于一种类型外,别无其它关系。线性结构:数据元素之间一对一的关系树形结构:数据元素之间一对多的关系图状结构或网状结构:结构中的数据元素之间存在多对多的关系2,物理结构/存储结构:描述数据具体在内存中的存储。顺序结构:数据元素放在地址连续的存储单元里。链式结构:数据元素放在...转载 2018-08-07 15:21:18 · 396 阅读 · 0 评论 -
C# abstract virtual interface
1,abstract微软官网说明 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/abstractabstract 修饰符可用于类、方法、属性、索引和事件(事件好像不行)。抽象类不能实例化。只有抽象类中才允许抽象方法声明。在抽象方法声明中使用 static 或 virtual 修饰符...原创 2018-07-30 18:36:46 · 294 阅读 · 0 评论 -
C# GC(垃圾回收机制)
转载参照自以下文章:http://www.cnblogs.com/fdyang/p/3456258.html (c#) 销毁资源和释放内存https://www.cnblogs.com/Jessy/articles/2552839.html C# Finalize和Dispose的区别https://www.cnblogs.com/wuyuankun/p/4103620.html C#中标...转载 2018-08-06 19:16:01 · 17355 阅读 · 0 评论 -
C# 基础学习4(is和as,执行就近原则,Equals,类型转换,string.Empty,const)
1,is和asis是判断类型(返回bool值),as是转换类型(返回相应的类型或null)。is操作符首先核实obj是否兼容于ClassA 类型。如果是,那么在if语句内部执行类型转换时,CLR再次核实obj是否引用一个ClassA。检查对象的类型,是个耗费资源的操作,首先要判断对象的实际类型,然后必须遍历继承树结构(层次结构),去与每个基类核对。使用checked可以检测强制转换的不报错问...原创 2018-08-06 00:03:42 · 857 阅读 · 0 评论 -
C# 基础学习3(#if,dynamic,浅拷贝,映射,递归)
1,#if #endif private void Awake() {#if UNITY_EDITOR#warning is unity editor#else#error is not unity editor#endif }#error使您可以从代码中的特定位置生成错误。#warning 使您得以从代码的特定位置生成一级警告。2,dynamic任...原创 2018-08-05 19:18:05 · 708 阅读 · 0 评论 -
C# 反射
参考以下文章:http://www.cnblogs.com/binfire/archive/2013/01/17/2864887.html C# 反射机制https://blog.youkuaiyun.com/sibaison/article/details/70168338 C#装配件https://bbs.youkuaiyun.com/topics/60376191 程序集与装配件是不是同一个概念https:...转载 2018-08-04 21:45:36 · 202 阅读 · 0 评论 -
C# 基础学习2(内联函数,类型约束,try catch,vs调试)
1,内联函数以下内容转载自:https://blog.youkuaiyun.com/tanxueguang/article/details/7454060 C#的inline内联函数优化的探讨调用函数需要CPU执行参数压栈、寄存器保存与恢复、跳转指令等操作,开销比较大,高频繁的调用函数对性能有影响.C#不支持inline,但是JIT(Just in time)即时编译器,支持自动inline,即将IL转...原创 2018-08-04 18:00:01 · 1023 阅读 · 0 评论 -
C# 基础学习1(struct,base,关联数组,枚举)
1,“关联数组”是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或者其他类型的值(除了NULL)来索引它。2,枚举是由一组特定常量构成的一组数据结构。主要作用是:约定(限制),直观(表达)。3,structstruct 不能被继承,class可以被继承struct 默认的访问权限是public,而class默认的访问权限是privatestruct只能声明带参数的...原创 2018-08-04 17:25:51 · 1067 阅读 · 0 评论 -
C# 内存分配,CLR内存分配,.NET框架
转载自以下几篇文章:https://www.cnblogs.com/Joy-et/p/4200128.html CLR内存分配https://blog.youkuaiyun.com/zhaom888/article/details/79126347 C#内存分配https://blog.youkuaiyun.com/u010032648/article/details/50298663 C# 垃圾回收中的大对象http...转载 2018-08-04 16:18:27 · 2090 阅读 · 0 评论 -
C# 值类型,引用类型
1,值类型值类型:int,float,char,bool,枚举, struct ,可空类型 概念:值类型直接存储其值,而引用类型存储对其值的引用。对于值类型来说,一般创建在线程的堆栈上。引用类型包含值类型时,值类型作为实例成员的一部分被创建在托管堆上。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。int i = ne...原创 2018-08-03 18:37:09 · 182 阅读 · 0 评论 -
C# 通用类型系统
参考文章: https://www.cnblogs.com/bakuhert/articles/5878086.htmlhttp://www.cnblogs.com/anytao/archive/2007/05/11/must_net_07.html .NET技术可以以规范和实现两部分来划分:规范:公共语言架构(CLI):通用类型系统(CTS),公共语言规范( CLS),通用中间...原创 2018-08-03 17:34:04 · 1256 阅读 · 0 评论 -
C# Directory和File
http://www.cnblogs.com/lgx5/p/6890641.html C# Directory类的操作System.IO.Directory类和System.DirectoryInfo类的相关操作public void CreatDir(string path){ Directory.CreateDirectory(path);//是否存文件夹,存在就直接返回,不创...原创 2018-09-21 18:17:48 · 2497 阅读 · 0 评论