随笔分类 - C#
摘要:C#中的 #region 和 #endregion 表示一块区域,这样在 Visual Studio 中可以将这块区域的代码折叠起来,便于查看。 虽然Visual Studio 也响应大括号的折叠,但大括号会引起作用域的变化,而 #region 和 #endregion 则不会。 例1: 例2:
阅读全文
摘要:DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。 使用DLL文件的好处是程序不需要在运行之初加载所有代码,只有在程序需要某个函数的时候才从DLL中取出。另外,使用DLL文件还可以减少程序的体积。 1. 选择项目,右键 Add -> Ref
阅读全文
摘要:Trace 类 和 Debug 类的区别在于,Trace 类会同时在 Debug、Release 模式下起作用,而 Debug 只作用在 Debug 模式下。 区别: 1. 输出跟踪信息 2. 输出调试信息 将有关调试的信息写入Listeners集合中的跟踪侦听器 。 只有 Debug 模式才会输出
阅读全文
摘要:什么是序列化以及如何实现序列化? 序列化是通过将对象转换为字节流,从而存储对象或将对象传输到内存,数据库或文件的过程。主要用途是保存对象的状态,包括对象的数据,以便能够在需要是重建对象。反向过程称为 反序列化。 如上图所示,对象 object 被序列化为 流,其中不仅包含数据、还包含对象类型的相关信
阅读全文
摘要:一、重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。 值得注意的是,方法重载只有通过参数不同来判断调用哪个方法,而不能通过返回值。至于原因,可以这样理解,你调用一个方法,如果有多个方法同名,系统必须要知道到底你要
阅读全文
摘要:轻量级同步 Interlock 为什么说它是轻量级呢?因为它仅对整形数据(即int类型,long也行)进行同步。 如果你学过操作系统里面的PV操作(即信号量),那么你对它已经了解了一般。它实现的正是如同信号量的功能。下面是它提供的方法:
阅读全文
摘要:为什么要使用 Task 线程是创建并发的底层工具,因此具有一定的局限性。 没有简单的方法可以从联合(Join)线程得到“返回值”。因此必须创建一些共享域。当抛出一个异常时,捕捉和处理异常也是麻烦的。 线程完成之后,无法再次启动该线程。相反,只能联合(Join)它(在进程阻塞当前线程)。 任务是可组合
阅读全文
摘要:类的静态字段在类的实例中是共享的。多个线程修改实例字段的值在对其它线程来说是可见的,这也是clr默认的行为。对静态字段添加ThreadStaticAttribute标记可以改变这种默认的行为。 ThreadStaticAttribute 指示静态字段的值对于每个线程都是唯一的。用 ThreadSta
阅读全文
摘要:Thread.Join() 官网解释如下: https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.thread.join?view=netframework-4.8 在此实例表示的线程终止前,阻止调用线程。 如下代码,thread1
阅读全文
摘要:C#中多线程的线程加.IsBackground = true与不加有什么区别? 按照MSDN上讲:“获取或设置一个值,该值指示某个线程是否为后台线程。” 其实这个解释并不到位,至少应该解释一下后台线程的概念! https://docs.microsoft.com/zh-cn/dotnet/stand
阅读全文
摘要:将字符串数组写入到文件,每个元素为一行 将字符串写入到文件 使用using语句动态写入到文件 将文本追加到文件末尾
阅读全文
摘要:读取文件内容有三种方式 全部读取到字符串变量中 一次读取一行 全部读取到字符串数组中,每个数组元素存储一行文本 全部读取到字符串变量 一次读取一行 全部读取到字符串数组中,每个数组元素存储一行文本
阅读全文
摘要:使用以下代码正常删除整个文件夹内容时,报错如下: 报错如下: 原因:文件权限问题,文件从别的地方复制到备份文件夹时,权限也复制过来了,再删除备份文件夹,删除失败 解决方法: 复制文件时,设置属性,删除文件时,再次设置属性。 资料来源: https://stackoverflow.com/questi
阅读全文