
C#基础
文章平均质量分 68
snakorse
这个作者很懒,什么都没留下…
展开
-
Attribute在.net编程中的应用
Attribute在.net编程中的应用(一)Attribute在.net编程中的应用(二)Attribute在.NET编程中的应用(三)Attribute在.NET编程中的应用(四)Attribute在.NET编程中的应用(五)Attribute在.NET编程的应用(六)...转载 2020-03-03 10:27:06 · 377 阅读 · 0 评论 -
C# Using GC Efficiently
Using GC Efficiently – Part 1So the goal here is to explain the cost of things so you can make good decisions in your managed memory usage – it’s not to explain GC itself - it’s to explain how t转载 2015-12-10 11:48:11 · 910 阅读 · 0 评论 -
C# Dispose, Finalization, and Resource Management
Alright! Here it is: the revised “Dispose, Finalization, and Resource Management” Design Guideline entry. I mentioned this work previously here and here. At ~25 printed pages, it's not what I would转载 2015-12-09 21:19:55 · 1471 阅读 · 0 评论 -
C# 函数式编程
编程语言范式许多现存的编程语言都可基于其计算模型加以分类,归入某些语言族,或者属于某种编程范式。按照不同的规则,可以有多种分类的方法,而且不同的学者对某些语言的具体归属也有不同的意见。给出一种系谱:说明式(Declarative) 函数式 Lisp, ML, Haskell 数据流 ld, Val 逻辑式 Prolog 基于模板 XSLT命令式(Im原创 2015-10-30 09:49:07 · 5688 阅读 · 0 评论 -
MD5与字符串编码
今天模拟一个安卓程序的数据包,有一个sign_code参数,32位是个md5,简单把其他参数按经验组合后取md5,对不上,算了,直接看源代码吧还好,代码混淆的很轻,dex2jar之后 搜索sign_code ,很快找到关键方法,跟之前猜的差不多,只是参数加密的顺序不一致按照代码 在易语言里 对组合后的字符串取数据摘要 得到md5,发现竟然跟java里得到的md5值不一样。。原创 2015-10-25 15:31:59 · 6912 阅读 · 0 评论 -
C# 隐式接口与显式接口实现
本文将通过以下四个案例来分析C#中的接口究竟是如何工作的。1、公有方法实现接口方法尽管C#在定义接口时不用指明接口方法的访问控制方式,但默认接口方法均为public型(这可以从反编译的IL代码中看到)。下面是使用Reflector查看的接口IL代码.class private interface abstract auto ansi IControl{ .method转载 2015-09-30 14:43:36 · 823 阅读 · 0 评论 -
C# 设置线程的默认CultureInfo
Thread.CurrentCulture 影响 数字、符号、货币、日期等的格式化形式Thread.CurrentUICulture 影响线程ResourceManager使用的资源类型CultureInfo.UseUserOverride属性指示是否使用用户在控制面板自定义的 数字、符号、日期、货币等的格式,可以通过CultureInfo构造函数设置新开一个新线程,默认的Cu原创 2015-08-15 13:08:42 · 6331 阅读 · 0 评论 -
P2P 穿透内网,连接动态ip,内网ip打洞,p2p实现原理
网上找了很多,代码大堆,原理讲清楚透彻的不多。本人找几篇讲得好的来整理一下。一片技术文章,最主要的讲清楚原理,如果再有完整的能运行的源代码也可,关键是要把核心部分代码分析清楚。(1)问题的由来:大部分的电脑上网都是用动态ip地址。内网的ip是由net(路由、网关)分配的,net发出去的时候,映射到一个公网地址,这是一个动态计算的过程(特别是端口号),因此称为动态ip转载 2015-08-10 09:15:18 · 2260 阅读 · 1 评论 -
C# BackgroundWorker的使用
BackgroundWorker 可以用于启动后台线程。主要的事件及参数: 1.DoWork——当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递DoWorkEventArgs参数; 2.RunWorkerCompleted——异步操作完成或中途终止会触发该事件。如果需要提前终止执行后台操作,可以调用Background转载 2015-07-30 15:08:09 · 632 阅读 · 1 评论 -
C# 结构体访问器错误提示
“ 错误 1 无法修改“WindowsFormsApplication1.MyClass.Struct”的返回值,因为它不是 变量” Code定义一个结构体MyStruct, public struct MyStruct { public int a ; public int b; }publi原创 2015-07-15 16:38:30 · 695 阅读 · 0 评论 -
C# .ToString() 格式化
c# ToString() 格式化字符串 格式化数值:有时,我们可能需要将数值以一定的格式来呈现,就需要对数值进行格式化。我们使用格式字符串指定格式。格式字符串采用以下形式:Axx,其中 A 为格式说明符,指定格式化类型,xx 为精度说明符,控制格式化输出的有效位数或小数位数。 格式说明符 说明 示例 输出 C 货币 2.5.ToString(“C”) ¥2.50 D 十进制数 25.T转载 2015-07-07 14:08:01 · 570 阅读 · 1 评论 -
C# WinForm捕获全局异常
static class Program { /// /// 应用程序的主入口点。 /// [STAThread] static void Main() { try { //设置应用程序处理异常方式:Thread转载 2015-06-05 10:46:36 · 1258 阅读 · 1 评论 -
Windows 7程序开发系列之二(JumpList篇2 - Destination)
JumpList中除了有User Task外,还有Destination。与User Task不同,Destination中是与该程序相关联的文件的链接。Destination还可以分类,Windows已经自动为我们管理了“最近“和“常用“两个类别。比如记事本程序,使用“最近”这个类别: 这对于大多数程序已经足够。但Windows也为我们提供了管理自己的类别的接口。程序转载 2015-06-03 12:22:46 · 969 阅读 · 1 评论 -
Windows 7程序开发系列之二(JumpList篇1 - User Task)
相对于上一篇中任务栏特性的开发,JumpList的开发显得稍微麻烦一些。JumpList将分为两次讲解,这次先讲解如何添加用户任务(User Task)。同样以foobar2000为例,当右键点击任务栏按钮时,显示程序的JumpList。 最下方3个项目为系统任务,一般不需要我们去操作。上方的两个任务:播放、参数选项,即为自定义的用户任务。用户任务本质上是一个快捷方式,转载 2015-06-03 12:19:42 · 874 阅读 · 1 评论 -
Windows 7程序开发系列之一(任务栏篇)
Windows 7 引入了很多新特性,其中最直观的莫过于用户界面上的变化。很多人也因为不能适应这种变化而回到了XP。但是在我看来这些新的特性却是一种进步,使用了一段时间之后,也萌生了要做一点开发的冲动。于是把以前一个电源管理的小软件重写了一次(点此下载 ),利用了Windows 7 的任务栏特性和JumpList。 关于Windows 7开发的中文资料比较少。微软官方的教程转载 2015-06-03 12:18:23 · 1239 阅读 · 1 评论 -
并发编程 活锁(livelock)
百度百科维基百科原创 2015-04-29 09:03:42 · 885 阅读 · 1 评论 -
C# XmlNode中Value和InnerText的区别
这个问题我想很多人在使用.NET 操作 Xml 文档时都遇到过,先看一下MSDN里对这两个属性的解释:XmlNode.Value:获取或设置节点的值。XmlNode.InnerText:获取或设置节点及其所有子节点的串联值。只看这两个定义是不是还是有点迷糊,下面我们用实例来作说明:1.当操作节点是叶子节点时:XmlDocument xDoc=new Xm转载 2015-04-27 14:31:42 · 7774 阅读 · 2 评论 -
C# 生成CHM文件
C#生成CHM文件(入门篇)http://www.cnblogs.com/alexis/archive/2010/09/29/1837909.htmlC#生成CHM文件(中级篇)http://www.cnblogs.com/alexis/archive/2010/09/30/1839032.htmlC#生成CHM文件(应用篇)http://www.cnblogs转载 2015-04-09 17:32:27 · 2974 阅读 · 1 评论 -
C# 绘图双缓冲技术总结
GDI+的双缓冲问题终于搞定了, 真是松了一口气!一直以来的误区:.net1.1 和 .net 2.0 在处理控件双缓冲上是有区别的。.net 1.1 中,使用:this.SetStyle(ControlStyles.DoubleBuffer, true); .net 2.0中,使用:this.SetStyle(ControlStyles.OptimizedDoubleBu转载 2015-03-31 17:32:30 · 1218 阅读 · 2 评论 -
C# 深入理解协变和逆变
msdn 解释如下:“协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型。“逆变”则是指能够使用派生程度更小的类型。 解释的很正确,大致就是这样,不过不够直白。直白的理解:“协变”->”和谐的变”->”很自然的变化”->string->object :协变。“逆变”->”逆常的变”->”不正常的变化”->object->string 逆变。转载 2015-03-13 20:59:39 · 425 阅读 · 1 评论 -
c# event内幕(add与remove)
代码:public event EventHandler NewMail;C#编译器编译这行代码时,会把它翻译成以下3个构造://1. 一个被初始化为null的私有委托字段private EventHandler NewMail = null;//2. 一个允许对象订阅事件的公共方法add_Xxx(其中Xxx是事件的名称)[MethodImpl(MethodIm转载 2015-03-11 23:25:32 · 9933 阅读 · 1 评论 -
C# Linq MSDN介绍导航
LINQ(语言集成查询)LINQ 介绍C# 中的 LINQ 入门 LINQ 查询简介 (C#)LINQ 和泛型类型 (C#)基本 LINQ 查询操作 (C#)使用 LINQ 进行数据转换 (C#)LINQ 查询操作中的类型关系 (C#)LINQ 中的查询语法和方法语法 (C#)支持 LINQ 的 C# 功能演练:用 C# 编写查询 (LINQ)转载 2015-03-11 22:58:13 · 893 阅读 · 1 评论 -
C# 关于匿名类型的特性
首先让我们看一个例子, 假设我们并没有Person类, 并且我们关心的属性只有Name和Age. 下面的代码演示了我们如何在没有声明类型的情况下来构建一个对象的: 1: var tom = new { Name = Tom, Age = 4 }; 2: var holly = new { Name = Holly, Age = 31 }; 3: var jon = ne转载 2015-03-10 09:34:53 · 1589 阅读 · 1 评论 -
C# 30分钟LINQ教程
在说LINQ之前必须先说说几个重要的C#语言特性一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在foreach一个集合的时候, 也要为遍历的集合的元素,指定变量的类型转载 2015-03-10 09:33:11 · 1094 阅读 · 0 评论 -
HTML frame,iframe,frameset之间的关系与区别
iframe 是在html页面内嵌入框架 框架内可以连接另一个页面,如 frameset 在一个页面中设置一个或多个框架 不能嵌套在body标签里frameset 它称为框架标记,是用来告知HTML文件是框架模式,并且设定可视窗口怎么分割frame 它只是设定某一个框架窗口中的参数属性if转载 2015-03-08 23:01:36 · 1014 阅读 · 0 评论 -
C#《走进Linq》系列文章导读
走进Linq--Linq横空出世篇走进Linq-辉煌的背后走进Linq-Linq大观园走进Linq-Linq to Objects(上)基础篇走进Linq-Linq to Objects(下)实例篇走进Linq-Linq to SQL感性认识篇走进Linq-Linq to SQL How do I(1)走进Linq-Lin转载 2015-03-07 23:26:21 · 478 阅读 · 0 评论 -
C# 对象序列化与反序列化
1. 对象序列化的介绍.................................................................... 2(1) .NET支持对象序列化的几种方式................................. 2(2) 几种序列化的区别............................................转载 2015-03-07 16:06:45 · 617 阅读 · 0 评论 -
C# FileStream、StreamWriter、StreamReader读写文件时BOM头问题
1.FileStream 不考虑编码,读写都是字节,如果文件有BOM(Byte Order Mark)标记,则需要考虑去除BOM头标记 并根据BOM头自行解码文件2.StreamWriter 在非追加模式下,默认使用UTF8编码写入,可以指定编码方式,原文件内容清空,并且会修改原文件的BOM标记为当前编码对应的BOM头标记;StreamWriter在追加模式下,默认使用UTF8编码写入,可原创 2015-03-06 22:39:57 · 2085 阅读 · 0 评论 -
C# vs2010代码段(Code Snippets)
1.前言开发人员不喜欢打字。如果你希望提高开发人员的生产力,减少键入的数量,这也同时减少打字稿的数量以及因此产生的编译器错误,这些都极大分散了开发人员的注意力。代码重用是开发人员收集代码的另一个原因。即使单个应用程序也会大量地由小而公共的代码段组成,在几乎每个程序中都会有相同的代码元素:循环、类、异常处理等等。开发人员传统上是对代码进行剪切和粘贴以避免重复键入。但是这具有相当的局限性,包括转载 2015-03-06 11:36:20 · 2027 阅读 · 0 评论 -
C++ 关于书上说的“编译的时候分配内存”
1、所谓在编译期间分配空间指的是静态分配空间(相对于用new动态申请空间),如全局变量或静态变量(包括一些复杂类型的常量),它们所需要的空间大小可以 明确计算出来,并且不会再改变,因此它们可以直接存放在可执行文件的特定的节里(而且包含初始化的值),程序运行时也是直接将这个节加载到特定的段中,不 必在程序运行期间用额外的代码来产生这些变量。 其实在运行期间再看“变量”这个概念就不再具备编译期间那转载 2015-03-06 11:04:25 · 3374 阅读 · 0 评论 -
C# 基础知识梳理系列索引
C#基础知识梳理系列一:CLR及程序集部署C#基础知识梳理系列二:C#的演绎大师:类型C#基础知识梳理系列三:C#类成员:常量、字段、属性C#基础知识梳理系列四:C#类成员:方法C#基础知识梳理系列五:委托与事件(上)C#基础知识梳理系列五:委托与事件(下)C#基础知识梳理系列六:抽象类与接口C#基础知识梳理系列七:字符串(不可变、驻留机制、转载 2015-03-05 20:06:46 · 793 阅读 · 0 评论 -
C# 互操作详解
C# 互操作性入门系列(一):C#中互操作性介绍C# 互操作性入门系列(二):使用平台调用调用Win32 函数C# 互操作性入门系列(三):平台调用中的数据封送处理C# 互操作性入门系列(四):在C#中调用COM组件MSDN介绍:互操作性与非托管代码交互操作与非托管代码交互操作帮助主题向 .NET Framework 公开 COM 组件转载 2015-02-27 12:34:15 · 1179 阅读 · 0 评论 -
C# 泛型详解
我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一种办法,在方法中传入通用的数据类型,这样不就可以合并代码了吗?泛型的出现就是专门解决这个问题的。读完本篇文章,你会对泛型有更深的了解。为什么要使用泛型为了了解这个问题,我们转载 2015-02-26 22:44:35 · 841 阅读 · 1 评论 -
C# HashTable深度解析
先例举几个问题:1,Hashtable为什么速度查询速度快,而添加速度相对慢,且其添加和查询速度之比相差一个数量等级? 2,装填因子( Load Factor)是什么,hashtable默认的装填因子是多少? 3,hashtable里的元素是顺序排序的吗?转载 2015-02-26 21:00:07 · 12336 阅读 · 1 评论 -
C# 线程同步(6)- 读写锁 ReaderWriterLock
到这一篇,在Windows下主流的线程同步方法已经都讲过了,包括穿插提到的Interlocked类,那都是我们传统的曾经学到过的概念。除此之外,.Net提供了一些特有的东西来帮助我们方便地完成代码,于是便有这一篇中要讨论的读写锁。ReaderWriterLock锁的好处 它跟Monitor一样,是.Net的原生类,不再与操作系统有什么瓜葛。回想Monitor、EventWaitHandl转载 2015-02-26 14:18:01 · 3667 阅读 · 1 评论 -
C# 线程同步(5)- 信号量 Semaphore
这次终于不用说太多话了,某人看这一系列博客的反应总是“好长……”,以至于都不愿意看下去。在这一系列开篇之前,本想应该一、两个星期就能解决,结果每篇总要花上一星期左右。总想把涉及的所有方面都讲得尽量清楚明白,希望容易被看懂。于是总是不断陷于考虑如何串联各处的关系、要写个怎样的例子、细细考量MSDN的每一句话是否妥当……能做的无用的事情也就这点儿,所以还是努力地督促着自己要尽快完成。 呵呵,还是转载 2015-02-26 14:16:49 · 919 阅读 · 1 评论 -
C# 线程同步(4)- 通知&EventWaitHandle一家
WaitHandle一家 在前一篇我们已经提到过Mutex和本篇的主角们直接或间接继承自WaitHandle:Mutex类,这个我们在上一篇已经讲过。EventWaitHandle 类及其派生类AutoResetEvent 和 ManualResetEvent,这是本篇的主角。 Semaphore 类,即信号量,我们下一篇再讲。 WaitHandle提供了若干用转载 2015-02-26 14:15:34 · 812 阅读 · 1 评论 -
C# 线程同步(3)- 互斥量 Mutex
什么是Mutex “mutex”是术语“互相排斥(mutually exclusive)”的简写形式,也就是互斥量。互斥量跟临界区中提到的Monitor很相似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。互斥量比临界区复杂转载 2015-02-26 14:14:30 · 730 阅读 · 1 评论 -
C# 线程同步(2)- 临界区&Monitor
监视器(Monitor)的概念 可以在MSDN(http://msdn.microsoft.com/zh-cn/library/ms173179(VS.80).aspx)上找到下面一段话:与lock关键字类似,监视器防止多个线程同时执行代码块。Enter方法允许一个且仅一个线程继续执行后面的语句;其他所有线程都将被阻止,直到执行语句的线程调用Exit。这与使用lock关键字一样。事实上,转载 2015-02-26 13:24:48 · 846 阅读 · 1 评论 -
C# 线程同步(1)- 临界区&Lock
预备知识:线程的相关概念和知识,有多线程编码的初步经验。 一个机会,索性把线程同步的问题在C#里面的东西都粗略看了下。 第一印象,C#关于线程同步的东西好多,保持了C#一贯的大杂烩和四不象风格(Java/Delphi)。临界区跟Java差不多只不过关键字用lock替代了synchronized,然后又用Moniter的Wait/Pulse取代了Object的Wait/Notify,另外转载 2015-02-26 13:17:19 · 978 阅读 · 0 评论