c#
文章平均质量分 64
米刀文
小小程序员
展开
-
C#中string.Empty、""和null 之间的区别
这是一个及其常见的问题,网上已经有关于这个问题的很多讨论。但是我觉得都是不求甚解,有一些还是在误导别人。下面我来说下我对这三者的理解,如有错误的地方请大家及时指正。一:""与string.Empty我认为是一样的。网上有一篇被转载了几十遍的文章是这样说的string.Empty 不分配存储空间,"" 分配一个长度为空的存储空间,我认为这句话是错误并且含糊不清的。 1、实际上Empty是s转载 2012-08-04 18:18:26 · 28219 阅读 · 9 评论 -
C#字符串换行--\r\n
'/r' 回车,回到当前行的行首,而不会换到下一行;'/n' 换行,换到当前位置的下一行,而不会回到行首;\r\n 或者 Enviroment.NewLine不同的环境使用方式不一样在C++语言中\n就表示回车换行所以在使用时要依据不同的语言环境!原创 2012-10-16 20:02:52 · 14323 阅读 · 0 评论 -
WinForm程序中两份mdf文件问题的解决
在项目中用程序中嵌入mdf文件的方式来进行SQLServer数据库开发非常方便,用来发布开源项目等很方便,点击就可以运行,免部署,特别是在教学中用起来更加方便,老师不用先将数据库文件detach再发给学生,学生也不用将数据库文件attach。采用项目中嵌入mdf文件的方式,老师把讲课的代码发给学生,学生打开就可以运行。我在传智播客.net培训班教学中就是用的这种方式进行讲解。在ASP.net程转载 2012-10-21 11:37:14 · 729 阅读 · 0 评论 -
C#中的关键字is和as
在编写程序的时候,很多时候我们会用到强制转换假设现在有一个父类Person,对应的子类ChinesePersonPerson per = new ChinesePerson();现在要求把per强制装换成ChinesePerson我们可以用try..catch捕获可能出现的无效转换try{ ChinesePerson chPer = (ChinesePerson)原创 2012-10-20 16:12:28 · 1066 阅读 · 0 评论 -
C#如何获取项目的根目录
编写程序的时候,经常需要用的项目根目录。自己总结如下 1、取得控制台应用程序的根目录方法 方法1、Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径 方法2、AppDomain.CurrentDomain.BaseDirectory 获取基目录,它由程序集冲突解决程序用来探测程序集 2、取得Web应用程序转载 2012-11-02 08:30:59 · 10840 阅读 · 0 评论 -
C#文件路径获取函数和文件名字获取函数
1. 获取绝对文件路径System.IO.Path.GetFullPath(string path)string fileName = "myfile.ext";string path1 = @"mydir";string path2 = @"\mydir";string fullPath;fullPath = Path.GetFullPath(path1);f转载 2012-11-01 14:08:21 · 1105 阅读 · 0 评论 -
什么是句柄
对于句柄,以前一直纠结不知道什么是句柄,什么窗口句柄,文件句柄……网上有人说句柄就是指针,但是还是纠结……最近在网上看到有一位大哥的解释,看完之后,好像有点理解了怎样才算通俗,也不知道我下面说的是否通俗? 首先我人为,句柄不是指针(哪怕说是指针的指针,要知道指针包含了太多的信息),若说句柄含有指针的某些意思(或在某种模式情况下就是指针)似乎更好; 而把句柄当做一个人的名字,并"可以通原创 2012-11-25 21:27:20 · 1015 阅读 · 1 评论 -
如何为WinForm程序打包
1:新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定.(详细见下图) 此主题相关图片如下:2:安装向导 关闭后打开安装向导,点击下一步,或者直接点击完成. 3:开始制作 安装向导完成后即可进入项目文件夹: 双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的转载 2012-11-10 18:34:30 · 1160 阅读 · 1 评论 -
C#在Winform中改变Textbox高度三种方法
最近在做C# Winform项目,需要有一个能动态调整大小的Textbox,并且要是单行的。试了几次,单行模式的Textbox不能直接改高度。于是搜索了一下,整理出几个改变高度的方法。1.将Textbox改为多行模式,设置MutliLine属性为True,然后屏蔽Enter键。private void txtTest_KeyDown (object sender, KeyEvent转载 2012-11-29 16:17:43 · 71443 阅读 · 3 评论 -
水晶报表编译报错"未能加载文件或程序集“file:///C:\Program Files\SAP BusinessObjects\Crystal Reports for .NET Framewor "
最近学习水晶报表,发现编译后报如下错误:未能加载文件或程序集“file:///C:\Program Files\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll”或原创 2012-12-25 18:10:31 · 5973 阅读 · 1 评论 -
多文档记事本开发随记
1、将窗体的ShowIcon属性设置为False,这样窗体在运行的时候就不会显示图标,但是在任务烂会显示默认的图标 将窗体的SHowInTaskbar属性设置为False,窗体将不会显示在windows的任务栏中2、OpenFileDialog设置打开文件类型 OpenFileDialog fileDialog = new OpenFileDialog();原创 2012-10-26 17:23:09 · 628 阅读 · 0 评论 -
C# Linq to Sql
LINQ查询运算符可以处理内存中可查询的.NET类型实例。可查询的.NET类型是指那些实现IEnumerable接口或继承于IQueryable泛型接口的类型。数组List、Dictionary及.NET Framework中的其他集合类型都是可查询的。 XML和DataSet不能直接查询,因为二者都没实现IEnumerable接口。为此,在使用前,我们需要对它们进行特殊处理,该过程会调用D转载 2013-01-13 17:40:58 · 1467 阅读 · 0 评论 -
C#如何获取进程的用户名
最近在学C#网络编程,写了一个Windows的资源管理器,其中有需要获得进程的用户名,Process类中没有集成好的方法和属性,于是在网上找了找大神们的帖子,借鉴了一下!需要添加对 System.Management.dll 的引用using System.Diagnostics;using System.Management;static void Main(string原创 2013-03-22 15:25:16 · 7876 阅读 · 4 评论 -
C#中播放背景音乐几种的方法
最经在写winform程序,其中有用到播放背景音乐特此收集了一些网上的教程:1、调用非托管的dll using System.Runtime.InteropServices; //DllImport命名空间的引用 class test //提示音 { [DllImport("winmm.dll")] public static extern bo原创 2013-05-26 22:10:34 · 17035 阅读 · 1 评论 -
winForm界面闪烁问题解决
加在构造函数里this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);this.UpdateStyles();另附转载的博客:最近对代码作了一些优化,试原创 2013-05-12 10:31:07 · 10948 阅读 · 4 评论 -
C#中List与IList的区别
List类:表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法。IList接口:表示可按照索引单独访问的一组对象。下面谈谈它们之间的区别:首先,List是一个类,IList是一个接口。接口和类的区别是本质的,类是负责功能的实现,而接口则是负责功能的定义。所以它们的区别本质上也就是类和接口的区别。具体来说,IList 泛型接口是 ICollection 泛转载 2012-10-13 18:09:44 · 1029 阅读 · 0 评论 -
控制台屏幕缓冲区
屏幕缓冲区是一个在控制台窗口输出的二维字符及颜色数组。一个控制台可以包含多个屏幕缓冲区,当前屏幕缓冲区指的是显示在屏幕上的那个缓冲区。 系统在创建新控制台时就会创建一个屏幕缓冲区。调用CreateFile函数指定CONOUT$值便可打开控制台的当前屏幕缓冲区。程序可以CreateConsoleScreenBuffer 函数为它的控制台创建额外的屏幕缓冲区。一个新的屏幕缓冲区用自己的句柄调用S转载 2012-08-28 10:02:34 · 6438 阅读 · 0 评论 -
C#命名空间与java包的区别
C#命名空间与Java包的区别:相同点:1、都是为了重用性(reusebility)——软件工程中一个非常重要的目标。2、C#里面的命名空间和java中的包都属于访问权限的控制机制。不同点:1、C#命名空间只是一种逻辑上的结构,它允许所组织的类文件的物理存放位置与逻辑结构不一致,而Java中类文件的物理结构必须与逻辑结构一致。2、Java的package原创 2012-08-04 14:27:02 · 3493 阅读 · 1 评论 -
C# ref与out关键字的使用与区别
需求假设:现需要通过一个叫Swap的方法交换a,b两个变量的值。交换前a=1,b=2,断言:交换后a=2,b=1。现编码如下:class Program { static void Main(string[] args) { int a = 1; int b = 2; Console.原创 2012-08-04 16:39:04 · 1032 阅读 · 0 评论 -
C#修饰符partial
1. 什么是局部类型?C# 2.0 引入了局部类型的概念。局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。局部类型适用于以下情况:(1) 类型特别大,不宜放在一个文件中实现。(2) 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。(3) 需要多人合作编写一个类。局部类型是一个纯语言层的编译转载 2012-08-04 18:29:15 · 878 阅读 · 0 评论 -
C#索引器
索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。 1、索引器的定义C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。定义索引器的方式与定义属性有些类似,其一般形式如下:[修饰符] 数据类型 this[索引类型 index]{get{//获得属性的代码}转载 2012-08-04 16:20:27 · 677 阅读 · 0 评论 -
c#中 (int)、int.Parse()、int.TryParse、Convert.ToInt32的区别
1、 (int)变量名[强制类型转换]: 该转换方式主要用于数字类型转换,从int类型到long,float,double,decimal类型,可以使用隐式转换,但是从long类型到int类型就需要使用显式转换,也就是该数据类型转换方式,否则会产生编译错误。 该方式对于浮点数会做无条件舍去,失去精确度 当然,该方式也可以进行object到int得转换,但是,原创 2012-08-04 16:57:27 · 1403 阅读 · 0 评论 -
C#中的可空数据类型
先来看一段代码:null值用来表示数据类型未被赋予任何值,它是一种引用类型且它只能赋值给引用类型,由于string是一个特殊的引用类型,因此编译器不会报错。但是当它赋值给值类型int类型的时候,编译器就会报错:我们知道数据库中是有NULL值的,例如下面的一张表,年龄(int类型)是可以为空的,代表目前不知道此人年龄,那么当我们在C#代码向数据库插入数据时,就会需要一个可空的in转载 2012-07-22 19:24:19 · 10643 阅读 · 1 评论 -
C# params传递多个参数
C#开发语言中 params 是关键字,可以指定在参数数目可变处采用参数的方法参数。在函数的参数数目可变而执行的代码差异很小的时候很有用! params关键字表示函数的参数是可变个数的,即可变的方法参数,例如Console.WriteLine( "{0},{1} ",i,j); 就像DELPHI 里 WRITELN 函数一样,用于表示类型相同,但参数数量不确定. 在方法声明中的转载 2012-07-22 14:46:09 · 15612 阅读 · 0 评论 -
正确实现 IDisposable
.NET中用于释放对象资源的接口是IDisposable,但是这个接口的实现还是比较有讲究的,此外还有Finalize和Close两个函数。MSDN建议按照下面的模式实现IDisposable接口:.NET的对象中实际上有两个用于释放资源的函数:Dispose和Finalize。Finalize的目的是用于释放非托管的资源,而Dispose是用于释放所有资源,包括托管的和非托管的。1 pu转载 2012-07-21 12:24:58 · 634 阅读 · 0 评论 -
C#中的struct(结构)为值类型,struct类型全接触
众所周知,struct类型和class类型非常相似,尤其是在C++中,class可以办到的事struct几乎都可以实现。在C#中struc类型依然存在,它的用处相对来说已经显得越来越不重要,这里主要讲述一下C#中struct和class的一个最大不同点,在C#中struct是值类型,而class是引用类型。例:class Program{struct Test{publ转载 2012-08-10 08:41:08 · 1139 阅读 · 0 评论 -
C# String和Stringbuilder的区别
C# 中String和 Stringbuilder的区别String 对象是不可改变的。每次使用 String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会,在需要对字符串执行重复修改的情况下,创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,转载 2012-08-10 09:14:00 · 865 阅读 · 0 评论 -
C# string与String的区别
最近,正在简单地学习C#的一些知识。C#是区分大小写的,但是我却发现C#中同时存在String与string,于是我很困惑,于是我上网搜索了一下,于是我了解了一些小知识。MSDN中对string的说明:string is an alias for String in the .NET Framework。string是String的别名而已,string是c#中的类,String是Fram转载 2012-08-10 09:12:33 · 785 阅读 · 0 评论 -
ListView数据绑定控件的使用
Repeater一般只用来展示数据,如果要对数据进行增删改查则用ListView更方便。使用想到来使ListView自动生成很多模版,免去手写模版的麻烦,我们可以对生成的模版再进行手工的调整以满足具体需求。首先设定数据源,然后点击智能提示中的“配置ListView”,选择一种布局方式,然后根据需要选择“启用编辑”、“启用插入”、“启用分页”、就会自动的生成常用的模版。注意:这样只是提高开发的效转载 2012-08-10 18:51:48 · 7522 阅读 · 2 评论 -
C#属性
属性:get { //读属性代码 } set { //写属性代码 } public class Person{private string name;public string Name{ get{return name;} set{ name=value;}}}属性可以忽略get或set访问器,但是不能两个都忽略.set访问器包含一个隐藏的参转载 2012-07-30 15:32:30 · 733 阅读 · 0 评论 -
C#中的一些方法修饰关键字virtual override sealed new
对于方法(属性、事件)1. 如想重写(扩展和修改继承)方法要求有两个 a. 基类必须是virtual b. 继承类型的同签名方法必须override也就是说基类和继承类都必须同意,重写才能实现2. 刚才只是说了只继承了一层的情况,但如果有多层集成,比如CClass:BClass:AClass a. B中的某个方法M1是override A中的M1来的,这时如果转载 2012-08-17 09:10:44 · 1130 阅读 · 0 评论 -
System.Math类中的方法和字段
方法 名称 说明 Abs 返回指定数字的绝对值。 Acos 返回余弦值为指定数字的角度。 Asin 返回正弦值为指定数字的角度。 Atan 返回正切值为指定数字的角度。 Atan2 返回正切值为两个指定数字的商的角度。 BigMul原创 2012-08-31 08:54:20 · 846 阅读 · 0 评论 -
C#如何让notifyIcon闪烁
最经在写一个网络提醒程序,想让有消息到达时,能够让任务栏图标闪烁,类似QQ消息提醒一样,这里用到vs中的NotifyIcon组件,还有定时器组件Timer首先要有两个图标图像,一个最好是透明的,blank.ico和striped.ico,还要有一个bool类型的变量 private Icon blank = Resources.blank; private原创 2013-05-27 21:03:43 · 8966 阅读 · 2 评论