C#
文章平均质量分 68
Real_JumpChen
这个作者很懒,什么都没留下…
展开
-
C# 各种文件和路径操作
AppDomain.CurrentDomain.BaseDirectory:获取当前应用程序所在的目录,比如:“E:\KiHan2017\Others\CommitMetaChecker\”if (!Directory.Exists(WorkingPath)):目标路径不存在Directory.CreateDirectory(WorkingPath):创建目标路径if (!File.Exists(CurrentPath)):目标文件不存在Path.GetDirectoryName(“E:\KiHan原创 2020-09-02 16:00:24 · 5982 阅读 · 0 评论 -
C#应该设计基类还是接口
未完待续原创 2019-06-04 01:44:06 · 840 阅读 · 0 评论 -
《CLR via C#》设计类型.接口
13.接口13.1类和接口继承原创 2019-06-03 18:30:56 · 256 阅读 · 0 评论 -
《CLR via C#》基本类型.枚举类型和位标志
15.枚举类型和位标志15.1枚举类型15.2位标志15.3向枚举类型添加方法原创 2019-06-09 23:05:39 · 289 阅读 · 0 评论 -
C# 如何测试代码的运行时间和GC次数
直接贴代码:class Program { static void Main(string[] args) { TestArrayList(); TestList(); Console.ReadKey(); } private static void ...原创 2019-06-01 20:21:12 · 2134 阅读 · 0 评论 -
《CLR via C#》设计类型.属性、事件
00原创 2019-05-29 16:01:39 · 230 阅读 · 0 评论 -
《CLR via C#》基本类型.数组
16.数组16.1初始化数组元素XXX16.2数组转型16.3所有数组都隐式派生自System.Array16.4所有数组都隐式实现IEnumerable,ICollection,IList16.5数组的传递和返回16.6创建下限非零的数组16.7数组的内部工作原理16.8不安全的数组访问和固定大小的数组...原创 2019-06-12 17:18:42 · 498 阅读 · 0 评论 -
《CLR via C#》设计类型.参数
9.参数9.1可选参数和命名参数有默认值的参数就是可选参数,调用有可选参数的方法时,可以选择不提供部分实参。在形参列表里:可选参数必须在所有必需参数(比如weight)后。static void Main(string[] args){ Param(145.5f, "jump", 170.5f); Console.ReadKey();}static void Param...原创 2019-05-29 00:20:32 · 217 阅读 · 0 评论 -
《CLR via C#》设计类型.泛型
12.泛型12.1FCL中的泛型12.2泛型基础结构12.3泛型接口12.4泛型委托原创 2019-05-31 17:09:48 · 374 阅读 · 0 评论 -
《CLR via C#》设计类型.方法
00原创 2019-05-28 17:55:11 · 312 阅读 · 0 评论 -
《CLR via C#》基本类型.字符、字符串和文本处理
字符字符串高效率构造字符串:StringBuilder获取对象的字符串表示:ToString解析字符串来获取对象:Parse编码:字符和字节的相互转换安全字符串原创 2019-06-04 14:20:13 · 260 阅读 · 0 评论 -
《CLR via C#》基本类型.委托
17.委托17.1初识委托17.2用委托回调静态方法17.3用委托回调实例方法17.4委托揭秘17.5用委托回调多个方法(委托链)17.6委托定义不要太多(泛型委托)17.6C#为委托提供的简化语法1.不需要构造委托对象2.不需要定义回调方法(用lambda表达式)...原创 2019-06-15 15:26:45 · 336 阅读 · 0 评论 -
C#如何通过Windows注册表获取到某个软件的目录和版本等信息
一、通过注册表得到TortoiseSVN的目录// RegistryKey 表示 Windows 注册表中的项级节点,OpenSubKey(String)以只读方式打开密钥RegistryKey SVNKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\TortoiseSVN"); if (SVNKey == null){ Log.L...原创 2019-06-28 14:27:32 · 2329 阅读 · 0 评论 -
C# Application类的dataPath、streamingAssetsPath、persistentDataPath、temporaryCachePath
数据文件路径:总共有四个属性,分别为:dataPath、persistentDataPath、streamingAssetsPath、 temporaryCachePath。dataPath : Contains the path to the game data folderdataPath是包含游戏数据文件夹的路径,dataPath是app程序包安装路径,app本身就在这里,此目录是只读的...原创 2019-08-22 16:40:25 · 14240 阅读 · 0 评论 -
C#中委托和事件的区别
事件就是委托属性啊,有个add和remove以及一个私有委托很多人说:“总是感觉委托和事件没什么区别,调用事件不就是相当于调用多个委托么?”不全对,事件之于委托,就相当于,集合的属性之于集合的元素,注意:事件封装了一层,事件其实就是一个特殊的多播委托class Program{ public delegate void SendHandler(string str); public e...原创 2019-07-25 11:10:57 · 3474 阅读 · 1 评论 -
C#构造函数如何调用该类的其他构造函数
如下:class Class1{ public Class1() { //Code 1 } public Class1(string s):this() { //Code 2 } public Class1(int i, string j) : this(j) { ...原创 2019-07-20 22:08:28 · 4013 阅读 · 0 评论 -
C# Partial关键字实现分部类和分部方法
一、分部类把一个类、结构或接口(不支持委托和枚举)放在几个.cs脚本中处理,C#编译器会自动把它们合起来!举例:public class Partial : MonoBehaviour{ private void Start() { Util util = new Util(); util.ShowMessage1(); ut...原创 2019-07-24 15:07:00 · 528 阅读 · 0 评论 -
《CLR via C#》基本类型.定制特性
18.定制特性18.1使用定制特性未完待续原创 2019-07-01 09:40:51 · 258 阅读 · 0 评论 -
用IList声明并用List实例化的目的
先举例:public class User{ public string mName; public int mAge; public User(string name, int age) { mName = name; mAge = age; }}internal class IListTest{ publ...原创 2019-07-05 10:56:59 · 1922 阅读 · 0 评论 -
StringWriter(Reader),StreamWriter(Reader)和TextWriter(Reader)的区别
1.TextWriter(Reader)分别是对连续字符系列处理的编写器(读写器),继承自System.IO。2.StringWriter(Reader)继承TextWriter(Reader),它主要是对字符串进行处理的类。3.StreamWriter(Reader)也继承TextWriter(Reader),它主要是以流的形式处理数据,可以是文件流、系列端口流、媒体视频流等。String...原创 2019-06-29 14:32:51 · 941 阅读 · 0 评论 -
《CLR via C#》基本类型.可空值类型
19.可空值类型19.1C#对可空值类型的支持原创 2019-07-04 11:08:27 · 335 阅读 · 0 评论 -
《CLR via C#》设计类型.类型基础
类型基础原创 2019-05-18 16:28:42 · 326 阅读 · 0 评论 -
C#字典Dictionary的用法(注重性能版)
private Dictionary<uint, MyPet> myPets; public List<MyPet&a原创 2018-08-14 21:58:00 · 26927 阅读 · 3 评论 -
C#如何实现多重继承
C#中是没有类的多重继承这个概念,要使用多重继承必须要通过接口Interface来完成可是大家都知道Interface实际上就是一个虚函数列表指针.内部封装的只有函数和属性.而且接口(Interface)不能实力化只能通过派生(因为没有构造函数)才可以使用.这一点和抽象类很类似,可是抽象类是个类,他有方法的实现,它所描述的对象是一个无法在现实中具现的对象,但它本身是个类对象。而接口实际上是一种...原创 2018-05-31 17:33:48 · 8321 阅读 · 1 评论 -
Unity项目开发中C#使用小技巧
内容会持续更新,有错误的地方欢迎指正,谢谢!本文是博主在用Unity开发游戏时的小技巧总结,以防忘记。1.C#属性的作用:其实,和public差不多,但是,如果需要对某个private字段(比如:age)有什么限制啥的,就很有用了:在set中,先判断age是否符合要求,符合要求再赋值。如果开发到后面,需要你去修改age的可取值的范围,这时,你外部用到这个age的地方都不需要改动,只需要修改...原创 2018-03-04 14:56:12 · 1228 阅读 · 0 评论 -
C#和C++字符串拼接的性能分析
内容会持续更新,有错误的地方欢迎指正,谢谢!字符串操作是编程中非常频繁的操作,下面是字符串拼接效率的提升方法:C#中字符串的拼接1.字符串和整数进行拼接时,应减少装箱string是引用类型,值类型与引用类型之间的转换存在装箱与拆箱操作;将值类型转换成引用类型的操作叫装箱,将引用类型转换成值类型叫拆箱。 字符串和整数进行拼接操作时,并不默认调用ToString()方法,存在...原创 2018-04-01 14:00:43 · 1872 阅读 · 1 评论 -
C#内存管理
内容会持续更新,有错误的地方欢迎指正,谢谢!垃圾回收机制Mono垃圾回收机制:一般,不需要我们去管GC,然而GC并不是实时性的,所以我们的资源使用完后, GC不会立刻执行清理来释放内存,因为GC不知道我们是否还会使用,所以它就等待,先处理其他的东西,一段时间后,发现这些东西不再用了,才执行清理,释放内存。所谓垃圾回收,回收的是分配在托管堆上的内存,对于托管堆外的内存,它无能为力。...原创 2018-03-19 09:04:13 · 605 阅读 · 0 评论 -
【转载】C#常用知识点汇总
本文大多是转载自凯奥斯,非常感谢大佬的文章!由于要开始找实习了,自己还没复习C#的高级特性,也不可能像C++那样可以花很长时间去学去写博客了,所以,站在巨人的肩膀吧,进入正题。C#语法小知识(一)Equals和==的区别C#语法小知识(二)struct和class的区别C#语法小知识(三)枚举类型enum(先看)补充:unity3d 超好用的委托模式 (再看)补充:[unity3d]unity中C转载 2018-02-28 13:24:56 · 881 阅读 · 1 评论 -
foreach和list的用法
内容会持续更新,有错误的地方欢迎指正,谢谢!foreachforeach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。当为集合中的所有元素完成迭代后,控制传递给 foreach 块之后的下一个语句。可以在 foreach 块的任何点使用 break 关键字跳出循环,或使用 continue 关键字直接进入循环的下一轮迭代。使用 foreach 显示整数数组的原创 2018-02-28 13:19:44 · 3024 阅读 · 2 评论 -
C#菜鸟教程笔记
笔记会持续更新,有错误的地方欢迎指正,谢谢!一、基础0.输入输出函数 Console.ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中 Console.WriteLine(“Length: {0}”, length);//输出 Console.WriteLine(“Hello World”);//输出1.C# 数据类型引用类型(Reference types):指的是一个内存原创 2018-02-28 02:42:59 · 5090 阅读 · 1 评论 -
C#的一些骚操作记录
C#中字符串前面加@的作用在C#中,字符串前加@表示强制不转译。如果你的字符串中有大量的\字符,而不是想用转义,那就写@来取消\转义字符。还有就是字符串可以换行。string a=@"abc def ghi";未完待续...原创 2018-11-19 16:52:15 · 1022 阅读 · 3 评论 -
《CLR via C#》CLR基础
CLR是公共语言运行库(Common Language Runtime),又叫公共语言运行时。CLR和Java虚拟机一样也是一个运行时环境,是一个可由多种编程语言使用的运行环境,可由面向CLR的所有语言使用。它负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离。.NET框架是一种以CLR为基础、支持多种语言(C#、F#、VB.NET、C++、Python等)的开发的软件...原创 2019-05-02 10:21:55 · 3470 阅读 · 1 评论 -
C# 预处理器指令介绍
C# 预处理器指令会影响编译过程。主要用途:1.在编译A版本时,可以使用预处理指令禁止编译器编译与与A版本无关的代码。2.在编写提供调试信息的代码时,也可以使用预处理器指令。#if #else #elif #endif流程控制。# define #undef# define或#undef必须放在脚本的第一行,也就是放在所有using XXX;前面。和#if #else #elif #end...原创 2019-05-30 13:10:48 · 403 阅读 · 0 评论 -
《CLR via C#》设计类型.类型和成员基础、常量和字段
3.类型和成员基础4.常量和字段原创 2019-05-25 23:19:28 · 293 阅读 · 0 评论 -
《CLR via C#》设计类型.基元类型、引用类型和值类型
2.基元类型、引用类型和值类型编程语言的基元类型引用类型和值类型值类型的装箱和拆箱对象哈希码dynamic基元类型原创 2019-05-24 22:14:36 · 302 阅读 · 0 评论 -
C# 如何重写Equals()、GetHashCode()及重写的意义
既然Object类里的ToString()这个虚方法能被重写且有一定的意义,那么Equals()、GetHashCode()这两个虚方法被重写后,同样是有意义的。原创 2019-05-24 16:58:08 · 5805 阅读 · 3 评论 -
C# 如何重写ToString函数及重写的意义
众所周知,C#的每一个类和结构都隐式继承自System.Object,而Object提供了ToString()虚方法,所以任何类的对象都有ToString()方法,该方法可以将对象转化为字符串(也可理解为:将数值或其它类型对象转换为字符串类型),该方法为虚方法,可以重写。举例1:int32类型重写了ToString(),将整数用字符串进行表示。int temp = 123;Console.W...原创 2019-05-24 16:51:18 · 5000 阅读 · 1 评论 -
readonly修饰的变量可以修改,只是不能重新分配
部分开发者会认为,readonly修饰的变量是不能修改的,在以后的开发中从不对readonly的变量进行修改,形成思维定势,这个观念是错误的。首先要明确一点:更改!=重新分配(赋值)对于简单类型(如int),更改是等于重新赋值,因为默认操作符只有=, 但于对于复杂类型,就不一定了。例如:对于集合类型,可以增加、移除、清空内容。例子如下:public interface IA { }pu...原创 2019-05-16 00:37:26 · 2000 阅读 · 0 评论 -
readonly和const的区别
部分开发者会认为,readonly修饰的变量是不能修改的,在以后的开发中从不对ReadOnly的变量进行修改,形成思维定势,这个观念是错误的。首先要明确一点:更改!=重新分配(赋值)对于简单类型(如int),更改是等于重新赋值,因为默认操作符只有=, 但于对于复杂类型,就不一定了。例如:对于集合类型,可以增加、移除、清空内容。例子如下:public interface IA { }pu...原创 2019-05-15 22:24:14 · 4263 阅读 · 0 评论 -
C# 为什么可以在一个类里声明并实例化自身类的对象
using System;namespace NewSelfClassObject{ class Program { static void Main(string[] args) { Console.WriteLine("C:{0}+N:{1}+O:{2}", Atom.C.Radius, Atom.N.Radius,...原创 2019-05-15 18:38:51 · 7500 阅读 · 5 评论