
C#基础
唐孝辉
QQ:1351105506
微信:xt411526
展开
-
1.异步
class Program { static void Main(string[] args) { Simple simple=new Simple(); simple.DoRun(); Console.WriteLine("main"); C...原创 2019-12-19 09:28:32 · 124 阅读 · 0 评论 -
5.线程
01.信号量Semaphore限制可同时访问某一资源或资源池的线程数public Semaphore(int initialCount,int maximumCount)参数initialCountType: System.Int32可以同时授予的信号量的初始请求数。maximumCountType: System.Int32可以同时授予的信号量的最大请求数。class ...原创 2019-12-18 17:23:48 · 129 阅读 · 0 评论 -
4.线程
01.Lock01L解决了多个线程对同一资源的共享使用问题,确保一个线程在lock到资源后,另外需要资源的线程只能处于等待状态。lock并不能解决线程间顺序执行的问题...原创 2019-12-18 14:21:10 · 112 阅读 · 0 评论 -
3.线程
01.开启多线程 class Program { static void Main(string[] args) { MultiThreadDemo(); Console.ReadKey(); } //多线程 private st...原创 2019-12-18 10:12:56 · 155 阅读 · 0 评论 -
2.线程
Abort方法和Interrupt都是用来终止线程的,但是两者还是有区别的。1、他们抛出的异常不一样,Abort 方法抛出的异常是ThreadAbortException, Interrupt抛出的异常为ThreadInterruptedException2、调用interrupt方法的线程之后可以被唤醒,然而调用Abort方法的线程就直接被终止不能被唤醒的。...原创 2019-12-17 16:56:23 · 156 阅读 · 0 评论 -
async和await
01.当向一个Web服务器发出一个请求时,如果我们发出请求的代码是同步实现的话,这时候我们的应用程序就会处于等待状态,直到收回一个响应信息为止 class Program { static void Main(string[] args) { int count=Convert.ToInt32(Console.ReadLine());...原创 2019-12-17 10:34:20 · 154 阅读 · 0 评论 -
01.线程
01.开启线程class Program { static void Main(string[] args) { Console.WriteLine("前台线程ID:"+Thread.GetCurrentProcessorId()); Thread thread=new Thread(Worker); ...原创 2019-12-17 09:36:45 · 110 阅读 · 0 评论 -
C# 特性
Conditional:起条件编译的作用,只有满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用。Obsolete:这个属性用来标记当前的方法已经被废弃,不再使用了。DebuggerStepThrough:调试时候跳过这个标记的部分 static void Main(string[] args) { Person person=n...原创 2019-11-19 09:38:27 · 390 阅读 · 0 评论 -
动态类型
dynamic 关键字来定义我们的动态类型动态类型是运行时才知道它的具体类型dynamic是类型,但是编译时不属于CLR类型(指的int,string,bool,double等类型,运行时肯定CLR类型中一种的),它是包含了System.Dynamic.DynamicAttribute特性的System.Object类型,但与object又不一样,不一样主要体现在动态类型不会在编译时时执行显式...原创 2019-11-11 14:53:42 · 856 阅读 · 0 评论 -
扩展方法
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别。扩展方法可以理解为现有的类型(现有类型可以为自定义的类型和.Net 类库中的类型)扩展(添加)应该附加...原创 2019-11-11 10:45:52 · 220 阅读 · 0 评论 -
集合
IList<>和IDictionary<>  { Judgment jud...原创 2019-11-04 17:19:02 · 197 阅读 · 0 评论 -
匿名方法
01.匿名方法——没有名字的方法(方法也就是数学中的函数的概念),匿名方法只是在我们编写的源代码中没有指定名字而已,其实编译器会帮匿名方法生成一个名字,然而就是因为在源代码中没有名字,所以匿名方法只能在定义的时候才能调用,在其他地方不能被调用(匿名方法把方法的定义和方法的实现内嵌在一起)委托是方法的包装,匿名方法也是方法,只是匿名方法是没有名字的方法而已,所以委托也可以包装匿名方法 publ...原创 2019-11-04 11:49:53 · 1004 阅读 · 0 评论 -
委托
01.委托作为方法传递using System;using static System.Console;namespace Mydelegate1{ //委托声明 public delegate bool ComparsionHandler(int first,int second); class Program { static voi...原创 2019-11-01 17:13:04 · 135 阅读 · 0 评论 -
可空类型Nullable和空合并操作符(?? 操作符)
01.可空类型是值类型,只是可空类型是包括null的值类型的 //定义1 int? value = 1; //定义2 Nullable<int> value2 =new Nullable<int>(1); WriteLine(va...原创 2019-11-01 10:15:28 · 269 阅读 · 0 评论 -
泛型协变和逆变3
01.协变性指的是——泛型类型参数可以从一个派生类隐式转化为基类在C#4.0中引入out关键字来标记泛型参数支持协变性 // List<T>.AddRange(IEnumerable<T>)方法 //将其元素添加到 List<T> 的末尾的集合。 集合自身不能为 null //但它可以包含为 null 的元素...原创 2019-11-01 09:28:50 · 101 阅读 · 0 评论 -
泛型基础2
01.我们写泛型代码的时候经常有大量的"<“和”>“符号,这样有时候代码一多,也难免会让开发者在阅读代码过程中会觉得有点晕的,此时我们觉得晕的时候肯定就会这样想:是不是能够省掉一些”<" 和">"符号的呢?你有这种需求了,类型推断,意味着编译器会在调用一个泛型方法时自动判断要使用的类型class Program { static void Main...原创 2019-10-31 19:42:53 · 239 阅读 · 0 评论 -
泛型基础
01.为什么需要泛型泛型就是一中模子没有使用泛型的时候 class Program { static void Main(string[] args) { WriteLine(Compare.CompareInt(1,2)); //2 WriteLine(Compare.Comp...原创 2019-10-31 15:51:57 · 121 阅读 · 0 评论 -
异常
异常类型01. class Program { static void Main(string[] args) { Console.WriteLine(TextNumberParser.Parse("one")); Console.WriteLine(TextNumberParser.Parse("on2...原创 2019-10-31 15:12:56 · 83 阅读 · 0 评论 -
nameof()
01作用:运算符获取变量、类型或成员的名称作为字符串常量 Console.WriteLine(nameof(List<int>)); //list Console.WriteLine(nameof(List<int>.Count));//Count02nameof 运算符在编译时进行求值,在运行时无效。可以使用 nameof 运算符使参数检查代码更易于维护:...原创 2019-10-31 14:51:20 · 1546 阅读 · 0 评论 -
== Equals ReferenceEquals三者的区别
ReferneceEqual专用于引用类型的比较对于值类型返回的永远是false对于引用类型,会比较他们的引用是否相等,假如相等,返回true,否则返回false对于string类型,也是比较其引用static void Main(string[] args) { int a = 100; int b = 100; ...原创 2019-10-31 10:05:11 · 221 阅读 · 0 评论 -
object
01.重写ToString()using System;using static System.Console;namespace Array{ class Program { static void Main(string[] args) { People people=new People(5,"一休")...原创 2019-10-31 09:36:28 · 118 阅读 · 0 评论 -
枚举
01.定义public enum State { One=10, Two=50, Three } class Program { static void Main(string[] args) { Console.WriteLine(...原创 2019-10-30 19:33:07 · 119 阅读 · 0 评论 -
引用类型
using System;namespace Objects{ class Program { static void Main(string[] args) { Student student1=new Student(1); Student student2 = student1; ...原创 2019-10-30 15:20:37 · 316 阅读 · 0 评论 -
值类型
01.定义 int number1 = 42; char letter = 'A'; float Pi = 3.14f; int number2 = number1; float Pi2 = Pi; Console.WriteLine(number...原创 2019-10-30 14:30:37 · 505 阅读 · 0 评论 -
浅拷贝MemberwiseClone()
/Object类只有MemberwiseClone调用了就已经产生了一个新对象了,这是浅复制在浅克隆中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象和克隆对象的成员变量指向相同的内存地址。简单来说,在浅克隆中,当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的成员对象并没有复制/...原创 2019-10-30 11:04:18 · 670 阅读 · 0 评论 -
is和as
class Program { static void Main(string[] args) { B b=new B(); b.sum("44"); //string b.sum(222); //other ReadKey(); } ...原创 2019-10-29 17:54:23 · 410 阅读 · 0 评论 -
类重写
01.override class Program { static void Main(string[] args) { Controller controller=new SubClass(); ReadKey(); } } class Controller ...原创 2019-10-29 16:31:46 · 1174 阅读 · 1 评论 -
类继承
01.派生02.重写03.抽象类04.System.Object05.is操作符原创 2019-10-28 18:53:21 · 349 阅读 · 0 评论 -
C# readonly和const
class Program { static void Main(string[] args) { People people=new People(); WriteLine(People.a); WriteLine(People.b); ReadKe...转载 2019-10-28 17:18:13 · 206 阅读 · 0 评论 -
静态类,静态字段,静态方法
01.静态字段 class A { public int a; //实例字段 public static int b; //静态字段 } class Program { static void Main(string[] args) { A a1=new A(); ...原创 2019-10-26 15:44:47 · 879 阅读 · 0 评论 -
类
01类的声明和实例化类的三大特征02实例字段03实例方法04访问修饰符05属性06构造器和终结器07静态08扩展方法09特殊类原创 2019-10-26 15:05:47 · 121 阅读 · 0 评论 -
使用别名
using System;using System.IO;using System.Text;using static System.Console;using System.Threading;//目的 消除两个同名类型的歧义和缩写名称using CountDownTimer=System.Timers.Timer;namespace 方法和参数{ class Pr...原创 2019-10-26 14:20:51 · 271 阅读 · 0 评论 -
类型转换
01.显式转换会发生数据丢失 double a = 10.4444d; int c = (int)a; Console.WriteLine(c); //1002.隐式转换int b = 100;double d = b;Console.WriteLine(d); //10003.checked关键字 会引发异常报错信息 unchecked { ...原创 2019-10-25 17:33:07 · 142 阅读 · 0 评论 -
字符串方法
static void Main(string[] args) { string s = "ABCD"; //01.字符访问(下标访问s[i]) Console.WriteLine(s[0]); //A //02.打散为字符数组(ToCharArray) ...原创 2019-10-25 15:03:43 · 118 阅读 · 0 评论 -
unity特性
public class Texing1 : MonoBehaviour{ [MyHeader("这个是特性")] public string Name; void Start() { Type type=this.GetType(); object[] o = type.GetField("Name").GetCusto...原创 2019-09-28 17:12:57 · 260 阅读 · 0 评论 -
C#反射
using System;using System.Collections.Generic;using System.Reflection;using System.Text;namespace 反射{ class Program { static void Main(string[] args) { ITank...原创 2019-09-28 16:11:54 · 80 阅读 · 0 评论