C#单例及关键点
摘要:如果构造函数未设置成private,被误new后,将丢失静态变量数据。
阅读全文
c#中对象传参时,并不能将方法内部修改过的值返回
摘要:虽然是传对象进去,但是对象一定要是new之后的,否则在方法处理完之后,并不能将值通过对象传递出来。
阅读全文
C#中如何将unix时间戳转换为正常时间
摘要:static void Main(string[] args) { var start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var time = start.AddMilliseconds(1545955200000).ToLocalTim...
阅读全文
C#检测到有潜在危险的 Request.Form 值--解决方案
摘要:说明: ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本。该数据可能表示存在危及应用程序安全的尝试,如跨站点脚本攻击。如果此类型的输入适用于您的应用程序,则可包括明确允许的网页中的代码。有关详细信息,请参阅 http://go.microsoft.com/fwl
阅读全文
c#时间转换-带时区问题(什么时候输出会显示+0800)
摘要:北京时间为例 如果输入时间不带时区信息,会转为unspecified类型,该类型转Local时会当作当前为utc来处理,也就是会直接+8 ,而当要转utc时,则把当前时间当local,直接-8. 而输入时间带时区信息时,或者使用DateTime.Now获取时间时,会转为local,这个在进行loca
阅读全文
c#获取IP及HostName
摘要:直接调用系统库获取 using System;using System.Collections.Generic;using System.Net;using System.Net.Sockets;
阅读全文
Default类型
摘要:生成类型的默认值,如果属于引用类型,则为NULL,值类型的则为0,结构类型则为0位模式。一般用于泛型。 Ms解释
阅读全文
.NET并行方法
摘要:using System; using System.Diagnostics; using System.Threading.Tasks; using System.Threading; namespace ConsoleApplication3 { class Program { static void Main(string[] args) ...
阅读全文
HashSet-散列表
摘要:1. HashSet是一个集合,也就是说是无序,且惟一的; 2. Contains进行比较时,如果是Object对象,会比较地址计算出的HashCode;如果是String则比较字符串内容的HashCode 3. HashSet有缓存,第一次Contains完成后,会缓存所有的HashCode,以备
阅读全文
序列化与反序列化
摘要:第一节 序列化 1、 序列化 序列化包括正向序列化和反向序列化,一般我们将正向序列化说成是序列化。 序列化(Serialization)是将一个类对象转化成一个字节流。 反序列化(Deserialization)是将一个字节流转化成一个对应的类对象的过程。 在WCF通信中,当向服务端发送请求的时候,
阅读全文
Task详解
摘要:C#线程篇 Task(任务)和线程池 QueueUserWorkItem:没有一个内建的机制让你知道操作在什么时候完成,也没有一个机制在操作完成是获得一个返回值 TaskCreationOptions这个类型是一个枚举类型,传递一些标志来控制Task的执行方式(AttachedToParent标志,
阅读全文
线程池及对象池
摘要:参考:线程相关 一般情况下使用Thread类创建线程,但创建线程和销毁线程的开销较大,过多的线程会消耗CPU及内存资源。因而.net提供了ThreadPool静态类改善该问题。 示意实例:--默认下限5,上限25 1. 线程池创建时,自动生成5个空线程; 2. 每排入一个任务,会有一个空线程接手并开
阅读全文
异步编程
摘要:参考文献1:Async和Await异步编程原理 参考文献2:关于async与await的FAQ 参考文献3:C#系列知识集 异步编程。在学习使用async/await的时候,很多文档包括msdn都刻意提到async/await关键字不会创建新的线程,用async关键字写的函数中的代码都在调用线程中执
阅读全文
.NET提供新功能的方法
摘要:2.1 基于运行时的实现 显而易见,.NET中大多数功能都是基于运行时实现的。比如的类定义的语法、方法的调用的语法以及所有基本编程语法都有对应的IL代码,这也正是定义运行时的内容之一。所以能编译为对应专有IL代码的功能必然是基于运行时实现的。 2.2 基于编译器 基于编译器的实现,最常见的例子就是上
阅读全文
值类型与引用类型
摘要:《CLR via C#》作者Jeffrey Richter的话来 说,“不理解引用类型和值类型区别的程序员将会给代码引入诡异的bug和性能问题“。 1. 通用类型系统 C#中,变量是值还是引用仅取决于其数据类型。 C#的预定义类型并没有内置于语言中,而是内置于.NET Framework中。.NET
阅读全文
foreach和yield语句详解
摘要:简单地说,当希望获取一个IEnumerable<T>类型的集合,而不想把数据一次性加载到内存,就可以考虑使用yield return实现"按需供给"。 使用yield return为什么能保证每次循环遍历的时候从前一次停止的地方开始执行呢? --因为,编译器会生成一个状态机来维护迭代器的状态。 1.
阅读全文
C#中Array与ArrayList的区别
摘要:原文链接:点击访问 C#中经常用到的集合类Array与ArrayList是许多刚接触C#语言的人比较困惑的。这两个对象是比较有用的,而且是在很多地方适用的。这里我转载了一些对Array与ArrayList对象的区别的总结,与大家分享。 主要区别: 一、Array的用法与数组几乎一样,可以看做是数据。
阅读全文
浅拷贝和深拷贝
摘要:原文链接:点击访问 浅拷贝就比如像引用类型,而深拷贝就比如值类型。 浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同),对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可
阅读全文