.NET Framework+CLR+C#知识
文章平均质量分 64
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
Base64编码表
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。 为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充’=’号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数转载 2017-03-03 15:22:05 · 10495 阅读 · 2 评论 -
C#转换Base64编码,解码的URL
Base64SecureURL.cs/// <summary> /// Base64编码转换安全的URL /// </summary> public static class Base64SecureURL { /// <summary> /// 字符串编码 /// </summary> /// <par转载 2017-05-25 22:25:55 · 7340 阅读 · 2 评论 -
C#版本和.NET版本以及VS版本的对应关系
之所以在这里分享这个对应关系,是因为在C#基础知识系列的文章发布之后,有些初学者对.NET版本和C#语言特性之间的对应关系有点不清楚,有时候会弄混淆了。并且通过这个对应关系,也可以帮助大家对C#和.NET 类库有个全面的把控,可以帮助大家理清楚C#和.NET 类库中各个知识点,使他们可以对号入坐。具体他们的之间对应关系见下表: 版本 .NET Framework版本 Visual Stu转载 2017-06-20 16:07:02 · 17531 阅读 · 0 评论 -
VS2015使用C#6.0中的那些新特性
1、自动属性的增强1.1、自动属性初始化 (Initializers for auto-properties)C#4.0下的果断实现不了的。 只要接触过C#的肯定都会喜欢这种方式。真是简洁方便呀。1.2、只读属性初始化Getter-only auto-properties先来看一下我们之前使用的方式吧public class Customer{ public string Name转载 2017-06-20 20:59:21 · 2920 阅读 · 0 评论 -
HttpHelper助手类整理(一)【简单实用版】
美好的生命应该充满期待、惊喜和感激。 public class HttpHelper { public static string Post(string url, string paramData) { return Post(url, paramData, Encoding.UTF8); } publi原创 2016-10-12 23:00:37 · 4856 阅读 · 0 评论 -
C#取得控制台应用程序的根目录方法
取得控制台应用程序的根目录方法1:Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径2:AppDomain.CurrentDomain.BaseDirectory 获取基目录,它由程序集冲突解决程序用来探测程序集取得WinForm应用程序的根目录方法1:Environment.CurrentDirectory.ToString();//获取或设置当前工作转载 2017-06-13 21:18:04 · 3093 阅读 · 1 评论 -
Microsoft.Office.Core 引用以及 Microsoft.Office.Core.MsoTriState 的问题
添加引用废了我半天的力气.这样,你的引用中就会出现以下内容(当然有可能以前就有了,不用更改office2003的安装)(1).net中有Microsoft.Office.Interop.PowerPoint, Office(2)com中有Microsoft.Office 11.0(或12.0) Object library但Office和Microsoft.Offi转载 2016-07-09 14:24:52 · 7933 阅读 · 1 评论 -
win7 64位安装vs2010不成功的解决办法
自己的笔记本上安装的系统的是win7 64bit的, 因为一直从事着微软方向的开发工作,vs是主要的开发工具, 一直以来从vc6, vs.net2003,vs2005,vs2008,vs2010,都使用过,也羡慕着微软开发工具的开发效率,把复杂的事情简单化了一直是微软件的作风。但是以前一直在自己的台式机上win7 64bit 上安装不成功vs2010,尝试了几次也没有成功..经过一天的不断尝试, 最转载 2017-07-21 09:28:42 · 4253 阅读 · 0 评论 -
C#数字、16进制字符串和字节之间互转
一个字节包含8个二进制位,一个十六进制可表示4个二进制位,所以,一个字节可以由2个十六进制表示总结如下: (1)一个byte 对应两位十六进制位,而不是八位(32位二进制位); (2)转化为十六进制之后,不足两位的,高位要补零。8位十六进制数占多少字节 比如0x12345678这是多少字节? 一位十六进制代表四位二进制,0x12345678转换成二进制就是0001-0010-0011-0100-转载 2017-07-19 22:37:37 · 19469 阅读 · 0 评论 -
WindowsService监听端口
主程序代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.ServiceProcess;using System.Text;using System.Net.Sockets;转载 2017-08-10 23:07:18 · 2768 阅读 · 0 评论 -
C#多线程编程之线程池的使用 (ThreadPool)
在面向对象编程中,经常会面对创建对象和销毁对象的情况,如果不正确处理的话,在短时间内创建大量对象然后执行简单处理之后又要销毁这些刚刚建立的对象,这是一个非常消耗性能的低效行为,所以很多面向对象语言中在内部使用对象池来处理这种情况,以提高性能,比如在ADO.NET内部就允许使用数据库连接池来提高性能,在JDBC中没有提供数据库连接池,一些开发人员为了提高效率就自己编写数据库连接池来提高性能,当然据我所转载 2017-08-11 15:49:06 · 5218 阅读 · 0 评论 -
Winform开发中耗时操作封装用异步执行(.net 4.0)
先定义一个 BackgroundTask.cs 代码如下:public class BackgroundTask { private static WaitDialogForm LoadingDlgForm = null; public static void BackgroundWork(Action<object> action, object obj)转载 2017-08-11 16:05:58 · 2963 阅读 · 0 评论 -
.Net4.0 任务(Task)
任务(Task)是一个管理并行工作单元的轻量级对象。它通过使用CLR的线程池来避免启动专用线程,可以更有效率的利用线程池。System.Threading.Tasks 命名空间下任务相关类一览: 类 作用 Task 管理工作单元 Task 管理带返回值的工作单元 TaskFactory 创建任务 TaskFactory 创建任务或者有相同返回值的延续任务 T转载 2017-08-11 14:24:39 · 2757 阅读 · 0 评论 -
System.Web.Caching.Cache类缓存 各种缓存依赖
Cache类,是一个用于缓存常用信息的类。HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例。一、属性 属性 说明 Count 获取存储在缓存中的项数。 EffectivePercentagePhysicalMemoryLimit 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比。 Effect转载 2017-08-26 10:50:47 · 1303 阅读 · 1 评论 -
HttpContext.Current.Cache和HttpRuntime.Cache的区别
先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象。 HttpRuntime.Cache:获取当前应用程序的Cache。 我们再用.NET Reflector工具看看HttpContext.Cache和HttpRuntime.Cache的实现:HttpContext.Cache和HttpRun转载 2017-08-30 17:18:01 · 1028 阅读 · 0 评论 -
C#运算符
C# 运算符C# 提供了许多运算符,这些运算符是指定要在表达式中执行哪些操作(数学、索引、函数调用等等)的符号。 可以重载许多应用于用户定义类型的运算符,从而更改其含义。对整数类型执行的运算(如 ==、!=、、&、|)通常也可对枚举 (enum) 类型执行。以下章节按最高优先级到最低优先级的顺序列示 C# 运算符。 各章节内运算符的优先级相同。 主要运算符以下是具有最高优先级的运转载 2017-09-08 14:28:13 · 709 阅读 · 0 评论 -
.NET Framework 4.6 and 4.5类库
.NET Framework 类库是一个库的类、 接口和值类型提供对系统功能的访问权限。 它是.NET framework 构建应用程序、 组件和控件的基础。 .NET Framework 和它的好处的概述,请参阅 .NET Framework 入门。 有关安装信息,请参阅 安装 .NET Framework。下表中列出并记录此参考中详细类库中的命名空间和命名空间类别。命名空间 命名空间 说转载 2017-09-18 16:45:47 · 2104 阅读 · 0 评论 -
System 命名空间
System 命名空间包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、特性以及处理异常的基础类和基类。类 类 说明 AccessViolationException 在试图读写受保护内存时引发的异常。 ActivationContext 标识当前应用程序的激活上下文。 此类不能被继承。 Activator 包含特定的方法,用以在本地或转载 2017-09-18 16:47:17 · 2626 阅读 · 0 评论 -
System.IO命名空间
System.IO 命名空间包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型。类 类 说明 BinaryReader 用特定的编码将基元数据类型读作二进制值。 BinaryWriter 将二进制中的基元类型写入流并支持用特定的编码写入字符串。 BufferedStream 添加缓冲层以读取和写入另转载 2017-09-18 17:09:29 · 890 阅读 · 0 评论 -
HttpModule与HttpHandler详解
ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过http管道(Http PipeLine)将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,转载 2017-09-22 14:15:12 · 1223 阅读 · 0 评论 -
IHttpModule接口
IHttpModule向实现类提供模块初始化和处置事件。IHttpModule包含兩個方法:public void Init(HttpApplication context);public void Dispose();Init():这个方法接受一个HttpApplication对象,HttpApplication代表了当前的应用程序,我们需要在这个方法内注册 HttpApplication对象暴转载 2017-09-22 15:17:30 · 504 阅读 · 0 评论 -
Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。
近来遇到这样一个错误:Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。错误原因分析: 产生错误时我执行的操作需要的执行时间比较长。我测试了一下,那个操作用到的存储过程,需要处理的数据有13多万条,需要执行时间大概是1分40秒。下图是当时执行时的截图。 而客户端与数据库连接时间以及命令的执行时间都是有限的,当这两个时间其中一个小于操作时间,错误就会产生。解决方法: 第一步:修转载 2017-10-12 09:24:19 · 4212 阅读 · 1 评论 -
C#协变与逆变
参照其他文章实现了协变和逆变的基本:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;namespace CovarianceAndContravariance{ class Program { #region 委托中的协变与逆变的使用 /* //协变和逆变主要.原创 2013-06-14 14:07:47 · 1341 阅读 · 0 评论 -
C# Directory.GetFiles()获取多个类型格式的文件
第一种方式System.IO.Directory.GetFiles()获取多个类型格式的文件System.IO.Directory.GetFiles("c:\","(*.exe|*.txt)"); 第二种方式var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories).Where(s => s.End转载 2017-12-13 21:01:43 · 24372 阅读 · 2 评论 -
GetInvocationList 方法
Delegate.GetInvocationList 方法 ()返回委托的调用列表。下面的示例将三种方法分配给委托。 然后,它调用GetInvocationList方法以获取分配给委托,以按逆序执行委托并执行其名称不包括子字符串的方法的方法总数”文件”。using System;using System.Collections.Generic;using System.IO;using Sys转载 2017-12-20 15:50:01 · 1994 阅读 · 0 评论 -
win2003 64bit系统 配置IIS问题
不重启IIS修改.net framework版本在服务器上新建网站或虚拟目录的时候,如果需要求该.net的版本,则会提示需要重启IIS(很奇怪本地却可以直接修改)。如果重启的话,网站就会出现短暂的无法访问。使用以下方法可以不重启IIS修改dotnet framework版本1.在cmd里切换到.net目录如:C:\WINDOWS\Microsoft.NET\Framework\v4转载 2017-12-04 13:22:38 · 526 阅读 · 0 评论 -
JAVA和C# 3DES加密解密
最近 一个项目.net 要调用Java的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255 核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章一个是C#采用CBC Mode,PKCS7 Padd转载 2017-12-12 22:24:42 · 659 阅读 · 0 评论 -
Hashtable 类
表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。命名空间:System.Collections备注每个元素都是一个存储在 DictionaryEntry 对象中的键/值对。键不能为 空引用(在 Visual Basic 中为 Nothing),但值可以。要重写 Object.GetHashCode 方法(或 IHashCodeProvider 接口)和 Object.Equals 方法(或转载 2018-01-11 15:37:28 · 397 阅读 · 0 评论 -
System.Linq和System.Linq.Expressions命名空间
System.Linq 命名空间提供类和接口支持使用查询的 语言集成查询 (LINQ)。类 类 说明 Enumerable 提供了一套 static (Shared 在 Visual Basic 中) 用于查询实现的对象方法 IEnumerable。 EnumerableExecutor 表示一个表达式树,并转载 2017-09-18 17:32:05 · 1693 阅读 · 0 评论 -
采用表达式树(Expression Block)对一个对象的属性进行“遍历”
Program.cs代码: class Program { private static void Main(string[] args) { var st = new Student { Id = 10, Name = "爱因斯坦" }; ParameterExpression paraExpr = Expr转载 2017-03-02 13:25:20 · 960 阅读 · 0 评论 -
采用表达式树(Expression Tree)对一个对象的属性进行“遍历”
实体类: public class Student { public int Id { get; set; } public string Name { get; set; } public string[] MultipleCareers { get; set; }转载 2017-03-02 11:49:41 · 888 阅读 · 0 评论 -
System.Linq.Expressions 命名空间
System.Linq.Expressions 命名空间包含的类、接口和枚举能够使语言级别的代码表达式表示为表达式树形式的对象。抽象类 Expression 充当类继承层次结构的根,这个层次结构被用于构造表达式树。命名空间中的类都继承于 Expression (例如 MemberExpression 和 ParameterExpression)被用于表示表达式树中的节点。 Expression 类包转载 2017-01-08 21:41:57 · 1905 阅读 · 0 评论 -
Thread wait()和sleep()的区别
sleep和wait都是使线程暂时停止执行的方法,但它们有很大的不同。1.sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,可以放在任何位置。 而wait,它是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。2.Sleep使用的时候,线程并不会放弃对象的使用权,即不会释放对象锁,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程也是无法访问的。转载 2018-01-07 00:35:07 · 5160 阅读 · 0 评论 -
非托管资源
IDisposable的接口是用来手动释放非托管资源,换另一句话说,释放非内存(非托管)资源。内存资源因为垃圾回收保证回收,但非内存资源(如socket, 文件handle等)的数量比内存少,占用多也不一定触发垃圾回收,因此需要手动及时清理。基本上在.NET中,如果一个类使用了非内存资源,它都会实现一个IDisposable接口。如果不手动调用Dispose方法,那么当这个类对象被垃圾回收时,.NE转载 2018-01-08 00:10:53 · 584 阅读 · 0 评论 -
对于托管资源和非托管资源的理解
在.net 编程环境中,系统的资源分为托管资源和非托管资源。对于托管的资源的回收工作,是不需要人工干预回收的,而且你也无法干预他们的回收,所能够做的只是了解.net CLR如何做这些操作。也就是说对于您的应用程序创建的大多数对象,可以依靠 .NET Framework 的垃圾回收器隐式地执行所有必要的内存管理任务。资源分为两种,托管的内存资源,这是不需要我们操心的,系统已经为我们进行管理了转载 2018-01-07 21:53:25 · 696 阅读 · 0 评论 -
利用反射将Datatable、SqlDataReader转换成List模型
1. DataTable转IListpublic class DataTableToListwhereT :new() { /// ///利用反射将Datatable转换成List模型 /// /// ///public static List ConvertToList(DataTabledt) { List list =newList(); Ty转载 2018-01-18 14:11:12 · 2725 阅读 · 3 评论 -
C#访问修饰符internal的访问范围误区释疑
一、前言MSDN关于访问修饰符的访问级别解释:访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性。本节介绍四个访问修饰符: public protected internal private使用这些访问修饰符可指定下列五个可访问性级别: public:访问不受限制。 protected:访问仅限于包含类或从包含类派生的类型。 Int转载 2018-01-18 14:45:12 · 652 阅读 · 0 评论 -
.NET中的托管资源与非托管资源
托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源。托管资源的回收工作是不需要人工干预的,有.NET运行库在合适调用垃圾回收器进行回收。非托管资源指的是.NET不知道如何回收的资源,最常见的一类非托管资源是包装操作系统资源的对象,例如文件,窗口,网络连接,数据库连接,画刷,图标等。这类资源,垃圾回收器在清理的时候会调用Object.Finalize()方法。默认情况下转载 2018-01-07 21:50:22 · 1464 阅读 · 0 评论 -
Http Handler 和Http Module
关系图: 页面事件管道For Http Module: 对于每个请求,所有的http模块都将通过。 如果有多个模块,执行顺序? 例如 : 模块A,订阅EndRequest 模块B,它订阅了BeginRequest和EndRequest 模块C,订阅AuthenticateRequest执行的顺序是: 模块B,BeginRequest 模块C,转载 2018-01-09 21:43:46 · 682 阅读 · 0 评论 -
C#中的static静态变量的用法
静态全局变量定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量。特点: A、该变量在全局数据区分配内存。 B、初始化:如果不显式初始化,那么将被隐式初始化为0。静态局部变量定义:在局部变量前加上static关键字时,就定义了静态局部变量。特点: A、该变量在全局数据区分配内存。 B、初始化:如果不显式初始化,那么将被隐式初始化为0。 C、转载 2018-03-04 15:03:15 · 22796 阅读 · 2 评论