![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#高级
GreAmbWang
博客是我的笔记本,Blink是我的朋友圈,论坛是我的老师
展开
-
【C#】关于深拷贝和浅拷贝
在C#中,数据类型有值类型和引用类型值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。引用类型包括:数组,用户定义的类、接口、委托,object,字符串。对于值类型的,拷贝是全拷贝,则是拷贝出另一个对象,两个对象的内存地址是不同的,一个对象的属性修改后不影响另一个对象;对于引用类型,一般都是浅拷贝,则只是引用地址,内存地址还是相同的,修改一个对象的属性后...原创 2019-06-22 00:09:00 · 408 阅读 · 0 评论 -
【C#】多播委托
多播委托,即是多路广播委托,即是委托可以包含多个方法,按照顺调用,多播委托只能得到最后一个方法的结果,如果其中有一个方法抛出异常,整个迭代就会停止。一般我们把多播委托的返回值声明为void使用 += 添加一个委托的引用使用 -=删除一个委托的引用static void Test1(){ Console.WriteLine("Test1");}stati...原创 2019-07-06 00:47:04 · 635 阅读 · 0 评论 -
【C#】Conditional特性使用,能取消方法的所有调用
Conditional在System.Diagnostics 命名空间下Conditional指示编译器,除非定义了指定的有条件编译符号,否则,应忽略方法调用或属性。一个方法在多个地方被调用,想取消调用时,则在方法上添加Conditional特性,能取消方法的所有调用比如在测试版本阶段,调用测试的方法,发布时需要取消,则可以使用Conditional,能很方便的取...原创 2019-07-07 22:45:18 · 609 阅读 · 0 评论 -
【C#】利用特性获取调用方的信息,哪个文件,哪个方法,哪一个行调用
CallerFilePath 调用该方法的文件路径CallerLineNumber调用该方法的文件行号CallerMemberName 调用该方法的方法或属性这些特性都在System.Runtime.CompilerServices 命名空间下public class Test{ public void Print(string value, [Call...原创 2019-07-07 23:04:27 · 644 阅读 · 0 评论 -
【C#】自定义特性Attribute
//指定特性可以应用于哪些类型上[AttributeUsage(AttributeTargets.Class)]public sealed class MyTestAttribute : Attribute{ public MyTestAttribute(string desc) { Desc = desc; } public str...原创 2019-07-17 23:23:19 · 507 阅读 · 0 评论 -
【C#】Socket实现服务器端和客户端通信
新建两个项目,一个服务器端,一个客户端创建服务器static void Main(string[] args){ //创建一个服务器 Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress iPA...原创 2019-07-17 23:23:06 · 905 阅读 · 0 评论 -
【C#】Action,Func,Predicate的使用,总结
Action和Func相同点都是delegate 都是泛型委托 都是最多有16个参数不同点Action 无返回值,Func 有一个返回值还有一个系统定义的委托Predicate,不常用,只能传一个参数并返回一个bool类型的值Action和Func就是系统定义好的委托,其实我们也可以自己定义,但是如果每次使用都自己定义也太麻烦了,所以还是使用现成的...原创 2019-06-29 11:17:33 · 4979 阅读 · 0 评论 -
【C#】yield关键字的简单理解
网上的讲解都太高大上以下是本人对yield关键字的简单理解举个例子,现在有数据,需要获取数据中的偶数集合public static int[] data = { 1, 2, 3, 4, 5, 6, 7, 8 };不使用yieldpublic static List<int> GetDataList(){ List<int> lis...原创 2019-08-03 18:45:17 · 572 阅读 · 0 评论 -
【C#】获取当前程序集版本号
获取当前程序集版本号Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;格式化string ver = string.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, ve...原创 2019-08-21 14:09:29 · 5385 阅读 · 0 评论 -
【C#】推荐一个软件.NET Reflector(.net反编译工具)
可以查看DLL的源码只支持托管的DLL收藏着下载https://www.jb51.net/softs/629309.html原创 2019-09-11 23:03:14 · 8511 阅读 · 0 评论 -
【C#】Linq基本操作
介绍一下Linq 是.NET Fraemork3.5 引入的一个新功能接下来,将是一些基本操作首先,新建Student类,存储数据public class Student{ public int ID { get; set; } public string Name { get; set; } public int Age { get; se...原创 2019-07-06 00:43:24 · 873 阅读 · 0 评论 -
【C#】协变和逆变
简单理解协变:子类转基类逆变:基类转子类IEnumerable<object> obj = new List<string>();//协变Action<string> str = new Action<object>((s) => { });//逆变MSDN:https://docs.microso...原创 2019-08-04 10:49:00 · 347 阅读 · 0 评论 -
【C#】异步操作,delegate,Thread,Task,async/await
Action与Func这两个是系统定义好的delegate,Action无返回值,Func有返回值无返回值public void A(int i){ Console.WriteLine(i);} Action<int> mAct = A;mAct.BeginInvoke(2, null, null);结果有返回值pub...原创 2019-07-20 11:37:16 · 1890 阅读 · 0 评论 -
【C#】反射获取类相关信息,操作属性,调用方法
新建一个测试类public class Student{ public int ID; public string Name { get; set; } public int Age { get; set; } public void Study() { Console.WriteLine("学习中"); } p...原创 2019-07-17 23:22:43 · 1255 阅读 · 0 评论 -
【C#】LINQPad工具 Linq测试,转换各种语言
下载:https://www.linqpad.net/Download.aspx可用于Linq语句测试,转换Lambda表达式,IL语言很好用的一个工具原创 2019-08-03 20:27:00 · 746 阅读 · 0 评论