![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
dragon_ton
这个作者很懒,什么都没留下…
展开
-
(C#) 销毁资源和释放内存
0. 什么是资源? .NET 框架中如何访问资源?所谓的资源就是程序中可利用的数据,譬如:字符串、图片和任何二进制数据,包括任何类型的文件。在面向对象的环境中,每一个类型都标识为某些程序所用的资源,要想使用这些资源,必须为相应的类型分配一定的内存空间。访问一个资源需要如下几个步骤:1)分配内存空间: 调用中间语言(IL)中的newobj指令(使用new操作符时,将产生newobj指令),为某个特定...转载 2018-06-08 13:54:31 · 8125 阅读 · 0 评论 -
C# 两个类之间传递数据
1、通过全局变量2、通过构造函数传递参数3、通过委托实现原创 2015-09-24 10:02:36 · 4173 阅读 · 0 评论 -
C#委托(delegate)简单示例:在两个form之间传递数据
关于Delegate【代理、委托】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名方法、lambda表达式。 现在我就从一个最简单最实用的一个小例子出发分析一下Delegate的使用。 现在有两个窗体Form1和Form2。 两个按钮Button1(Form)和Button2(Form2)。Form转载 2015-09-24 09:25:30 · 5438 阅读 · 0 评论 -
string和DateTime类型之间互相转化
方法一:Convert.ToDateTime(string)string格式有要求,必须是yyyy-MM-dd hh:mm:ss================================================方法二:Convert.ToDateTime(string, IFormatProvider)DateTime dt;DateTimeF转载 2015-10-27 13:58:10 · 2518 阅读 · 0 评论 -
C#日期格式转换大全
C#常用日期格式处理转换[C#日期格式转换大全] 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:DateTime.ToString的方法(String, IFormatProvider) using System;转载 2015-10-27 14:10:34 · 1247 阅读 · 0 评论 -
Dictionary通过下标获取key和value
Dictionary dic = new Dictionary(); Dictionary.Enumerator en = dic.GetEnumerator(); for (int i = 0; i { if (en.MoveNext()) {转载 2015-11-12 10:03:16 · 1194 阅读 · 0 评论 -
c#对于mutex互斥量的深入理解
互斥锁(Mutex)互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。互斥锁可适用于一个共享资源每次只能被一个线程访问的情况 函数://创建一个处于未获取状态的互斥锁Public Mutex();//如果owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态 Public Mutex(bool own转载 2015-09-09 13:34:09 · 406 阅读 · 0 评论 -
C# Mutex对象的使用
C#语言有很多值得学习的地方,这里我们主要介绍C# Mutex对象,包括介绍控制好多个线程相互之间的联系等方面。如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才转载 2015-09-09 14:15:12 · 535 阅读 · 0 评论 -
C# using 三种使用方式
1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。 例如:using System; 一般都会出现在*.cs中。2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。 这种做法有个好处就是当同一个cs引用了两转载 2015-07-25 13:37:42 · 320 阅读 · 0 评论 -
C# WinForm控件、自定义控件整理(大全)
对C# WinForm开发系列收集的控件使用方面进行整理, 加入了一些文章, 不断补充充实, 完善这方面.基础 - 常用控件C# WinForm开发系列 - CheckBox/Button/Label/ProgressBarWinForm下CheckedListBox的数据绑定Winform 下无闪烁走马灯效果实现c#,winform,progressb转载 2015-08-29 12:37:45 · 1769 阅读 · 0 评论 -
equals和==的区别
== 和 Equals 的区别 1. == 是一个运算符。 2.Equals则是string对象的方法,可以.(点)出来。 我们比较无非就是这两种 1、基本数据类型比较 2、引用对象比较 1、基本数据类型比较 ==和Equals都比较两个值是否相等。相等为true 否则为false; 2、引用对象比较 ==和Equals都是比较栈内存中的地转载 2015-07-23 12:01:45 · 342 阅读 · 0 评论 -
C# Winform 跨线程更新UI控件常用方法总结(转)
概述C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常。处理跨线程更新Winform UI控件常用的方法有4种: 1. 通过UI线程的SynchronizationContext的Post/Send方法更新; 2. 通过UI控件的Invoke/BegainInvoke方法更新;3. 通过Backgrou转载 2015-07-30 15:36:51 · 516 阅读 · 0 评论 -
浮点数保留小数
1.保留N位,四舍五入 Math.Round(0.34567,2) 2.保留N位,四舍五入 double dt= 0.34567; string str= dt.ToString("f2");//fN 保留N位,四舍五入 3.保留N位,四舍五入 string res = String.Format("{0:N2}", 0.34567);//2位原创 2015-04-09 11:09:28 · 747 阅读 · 0 评论 -
C# Math类
Math.abs() 计算绝对值。 Math.acos() 计算反余弦值。 Math.asin() 计算反正弦值。 Math.atan() 计算反正切值。 Math.atan2() 计算从x 坐标轴到点的角度。 Math.ceil() 将数字向上舍入为最接近的整数。 Math.cos() 计算余弦值。 Math.exp() 计算指数值。 Math.floor() 将数字向下舍入为最转载 2015-09-24 16:49:23 · 1810 阅读 · 0 评论 -
Could not find file 'Microsoft.Windows.CommonLanguageRuntime, Version=2.0.50727.0' 问题
今天Publish Solution的时候遇到了这个错误:Could not find file 'Microsoft.Windows.CommonLanguageRuntime, Version=2.0.50727.0' 感到很诧异,CLR都找不到了,还混个P啊~!后来查查资料,网上说这是因为Solution有多个入口程序而导致的。个人组织了三种解决方案:1.Solution中保转载 2015-10-28 18:13:58 · 772 阅读 · 0 评论 -
webservice第一次调用速度很慢
1、webservice如果是java或者.net开发的, 在第一次调用的时候才会把虚拟机代码编译为真正可运行的机器码, 这过程是需要时间的. 所以第一次运行永远是很慢的, 编译好了驻留内存了性能就和直接用C++等语言编写的代码差不多了转载 2015-10-30 09:50:56 · 2618 阅读 · 0 评论 -
.Net内存泄露原因及解决办法
1. 什么是.Net内存泄露(1).NET 应用程序中的内存您大概已经知道,.NET 应用程序中要使用多种类型的内存,包括:堆栈、非托管堆和托管堆。这里我们需要简单回顾一下。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。在运行库的控制下执行的代码称作托管代码。相反,在运行库之外运行的代码称作非托管代码。COM 组件、ActiveX 接口和 Win32 API 函数...转载 2018-06-07 11:23:39 · 717 阅读 · 0 评论 -
C#中常见的winform控件命名规范
我们知道Button 常常简称为btn,那么Winform中的其它控件呢,这篇文章在C#的winform控件命名规范 的基础上对一些控件的名称的简称进行了整理。 1. 标准控件NO.控件类型简写控件类型1btnButton2chkCheckBox3ckl转载 2017-09-29 22:51:47 · 8078 阅读 · 2 评论 -
SmartThreadPool
https://github.com/amibar/SmartThreadPool首先是实例化的时候的参数的解释//Initialize SmartThreadPool & Make logs//SmartThreadPool m_hThreadPool;//m_hThreadPool = new SmartThreadPool();//声明一个线程池STPStartIn转载 2017-10-07 09:30:08 · 1534 阅读 · 0 评论 -
linq、lambda、entity framework之间的关系
lambda: 一种匿名委托的精简版写法,明显的标志是=>符号entity framework(简称EF): 微软访问数据库的最快捷最成熟的框架(ORM),在EF出现以前有SqlHelper、NHibernate等访问数据库的框架Linq: .net 3.5以后的一种语法,使用它可以像用sql语句那样方面地查询内存、xml、数据库等,大大减少了for循环的数量和增加了可靠性转载 2017-06-13 19:42:45 · 1219 阅读 · 0 评论 -
修改App.config文件
1. Save the the following config file as c:\ohad.config "1.0" encoding="utf-8" ?>"name" value="the value"/> 2. Create a simple windows forms application and paste t原创 2016-10-06 15:49:45 · 532 阅读 · 0 评论 -
枚举值转换(字符串转换为枚举和整数转换为枚举)
假设定义了一个这样的枚举类型: enum MyEnum { aa = 1, bb = 2 } 1、字符串转换为枚举: string strA = "aa"; MyEnum myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), strA);转载 2016-10-05 10:05:23 · 2255 阅读 · 0 评论 -
C#数组的合并拆分
/// /// 合并数组 /// /// 第一个数组 /// 第二个数组 /// 合并后的数组(第一个数组+第二个数组,长度为两个数组的长度) public string[] MergerArray(string[] First, string[] Second) {转载 2016-08-16 12:00:33 · 786 阅读 · 0 评论 -
C#获取当前应用程序所在路径及环境变量
一、获取当前文件的路径string str1=Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。 string str2=Environment.CurrentDirectory;//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。(备注:按照定义,如果该进程在本地或网络驱动器的根目录中启动,转载 2015-12-10 16:03:54 · 1145 阅读 · 0 评论 -
AutoReSetEvent用法(二)
[c-sharp] view plaincopyusing System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleTest {转载 2016-01-16 11:07:11 · 350 阅读 · 0 评论 -
AutoResetEvent用法(一)
AutoResetEvent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果 AutoResetEvent 处于非终止状态,则该线程阻塞,并等待当前控制资源的线程通过调用 Set 发出资源可用的信号。调用 Set 向 AutoResetEvent 发信号以释放等待线程。Aut转载 2016-01-16 11:00:25 · 1461 阅读 · 0 评论 -
根据索引获取Dictionary的key和value值
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DictionaryHelper{ public class DictionaryHelper { public static K getKey(Di原创 2015-12-12 11:43:34 · 14563 阅读 · 0 评论 -
C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
XML文档是一种通用的文档,这种文档既可以用.config作为后缀也可以用.xml作为后缀。XML文档主要由元素节点和节点的属性共同构成的。它有且仅有一个根节点,其他的节点全部都是根节点的子节点或者子子节点;每一个节点有开始就一定会有结束,不可能出现有开始无结束的节点,节点主要有两种类型:有InnerText的……和没有InnerText的。在节点中含有属性,一个节点可以含有多个属性,每个属性是由转载 2015-12-10 16:59:55 · 606 阅读 · 0 评论 -
使用委托来减少if..else判断
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _13{ public class ClassPeople { public void SayChinese(string name) {转载 2015-07-15 10:17:02 · 1445 阅读 · 2 评论 -
C#中Split用法
1、用字符串分隔: using System.Text.RegularExpressions;string str="aaajsbbbjsccc";string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);foreach (string i in sArray) Response.Write(i.ToString()转载 2015-07-25 15:44:05 · 291 阅读 · 0 评论 -
Dictionary用法
说明 必须包含名空间System.Collection.Generic Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) 键必须是唯一的,而值不需要唯一的 键和值都可以是任何类型(比如:string, int, 自定义类型,等等) 通过一个键读取一个值的时间是接近O(1) 键值对之间的偏序可以不定义转载 2014-12-13 15:25:47 · 291 阅读 · 0 评论 -
C#线程调用带参数的方法
在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法。第一种:使用ParameterizedThreadStart。调用 System.Threading.Thread.Start(System.Object) 重载方法时将包含数据的对象传递给线程。使用 ParameterizedThreadStart 委托不是传递数据的类型安全的方法,因为转载 2014-12-04 18:54:46 · 780 阅读 · 0 评论 -
Thread的Abort和Join方法总结
今天刚开始学多线程,尽管以前用过一点点,但是只是照着网上代码抄,没有真正理解,现在回过头来想研究研究,慢慢弄懂,下面就是我在网上所找资料的例子,相信大家都看过,做了小点改动 0 View Code1 namespace 多线程2 {3 public class Simple4 {56 public static转载 2014-10-11 08:51:02 · 4233 阅读 · 0 评论 -
String.Empty、string=”” 和null的区别
String.Empty是string类的一个静态常量;String.Empty和string=””区别不大,因为String.Empty的内部实现是:123456789101112public static readonly string Empty转载 2014-10-06 11:24:08 · 4539 阅读 · 0 评论 -
int[]、int[,]和int[][]区别联系
int[,] 是二维数组,它就是传统意义上 n x m 的表,和 C++ 里的 int[][] 是一个意思。int[][] 是交错数组,与 C++ 里的 int[][] 不同。它其实是一个 int[] 里嵌套着 int[],可以理解为 (int[])[]。如图。转载 2014-09-01 10:34:47 · 3546 阅读 · 0 评论 -
Convert.ToInt32()与int.Parse()的区别
(1)这两个方法的最大不同是它们对null值的处理方法: Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。没搞清楚Convert.ToInt32和int.Parse()的细细微区别时千万别乱用,否则可能会产生无法预料的结果,举例来说:假如从url中取一个参数page的值,我们知道这个值是一个int,所以即可以用Con转载 2014-09-01 09:30:30 · 458 阅读 · 0 评论 -
C# Delegate3
在C#中,delegate是一个神奇的关键字,值得拿出来单独作为一个话题。一.基本内容 调用(invoke)委托,相当于调用委托所绑定的方法,一个委托可以绑定多个方法,使用"+="就可以向委托中添加新的方法,使用"-="可以从委托中删除方法:public delegate void Print();class Program{ public sta转载 2014-09-13 13:33:44 · 439 阅读 · 0 评论 -
C# Delegate1
引言 Delegate是Dotnet1.0的时候已经存在的特性了,但由于在实际工作中一直没有机会使用Delegate这个特性,所以一直没有对它作整理。这两天,我再度翻阅了一些关于Delegate的资料,并开始正式整理这个C#中著名的特性。本文将由浅入深的谈一下Delegate这个特性。一.Delegate是什么? Delegate中文翻译为“委托”。Msdn中对转载 2014-09-13 12:08:04 · 360 阅读 · 0 评论 -
C# Delegate2
在c#中,event与delegate是两个非常重要的概念。因为在Windows应用程序中,对事件的使用非常频繁,而事件的实现依赖于delegate。 下面是对网上一些比较好的关于delegage的资料的整理,以及自己的一些想法。 委托概述 委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。与 C 中的函数指针不同,委托是面向对象的、类型安全转载 2014-09-13 13:30:17 · 517 阅读 · 0 评论 -
数组、ArrayList和List三者的区别(C#)
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。数组 数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。[csharp] view plaincopy"font-family:SimSun;font-size:18px;">//数组转载 2014-08-30 15:42:00 · 446 阅读 · 0 评论