DotNet
文章平均质量分 64
安静平和
这个作者很懒,什么都没留下…
展开
-
C#运算符重载
运算符重载是指允许用户使用用户定义的类型编写表达式的能力。它允许用户定义的类型与预定义的类型具有相同的功能。 例如,通常需要编写类似于以下内容的代码,以将两个数字相加。很明显,sum 是两个数字之和。 int i = 5; int sum = i + j; 如果可以使用代表复数的用户定义的类型来编写相同类型的表达式,那当然是最好不过了: Complex i =转载 2014-02-27 11:21:25 · 983 阅读 · 0 评论 -
UserControl 中包含封装了集合对象的属性被设计器自动初始化所引起的错误!也有关于List的问题
在CSDN上看到了一篇关于UserControl引起的问题,去重现了一下,并进行了一些小结。自定义 UserControl 中包含封装了 List 类型字段的属性,编译后造成引用了该 UserControl 的窗体设计器无法显示!public partial class UserControl1 : UserControl{private List fac转载 2014-03-17 17:05:53 · 3475 阅读 · 1 评论 -
vs2008 复制窗体产生错误 .resources”在“Resources”参数中指定了多次。“Resources”参数不支持重复项。
1、错误 项“obj\Debug\WindowsFormsApplication3.Form3.resources”在“Resources”参数中指定了多次。“Resources”参数不支持重复项。 WindowsFormsApplication3引起错误的原因是,在vs2008里想省事复制窗体Form2,进行粘贴,生成窗体Form2的副本,在窗体属性里手动更改副本窗转载 2014-04-14 22:25:40 · 1322 阅读 · 0 评论 -
C# 静态类与非静态类、静态成员的区别
静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。 静态类是自C# 2.0才引入的,C# 1.0不支持静态类声明。程序员必须声明一个私有构造器。私有构造器禁止开发者转载 2014-04-14 22:45:31 · 1363 阅读 · 0 评论 -
IList,ICollection,IEnumerable辨析
祖宗: IEnumerable此接口只有一个方法 GetEnumerator();是FrameWork为了实现迭代器模式设计的接口。所有继承了IEnumerable的类,要使用foreach迭代器时,就需要使用该方法。因此也只有实现了该接口的类才可以使用foreach。ICollection继承自IEnumerable,IList继承自ICollection这两转载 2014-05-04 13:05:57 · 1166 阅读 · 0 评论 -
C# 命令行编译器详解
摘要:本文分析了使用 C# 命令行编译器 csc.exe 生成应用程序的过程。同时,还将向读者介绍很多为 C# 2.0 独有的编译器选项,例如,extended/reference 标志和强名称支持。阅读完本文的内容之后,您将能够轻松地在没有向导的环境中生成单文件程序集和多文件程序集。适用于:Microsoft Visual C# 2.0注 本文假定您熟悉 C# 编程语转载 2014-05-04 16:24:05 · 1135 阅读 · 0 评论 -
C# 命令行编译器详解
摘要:本文分析了使用 C# 命令行编译器 csc.exe 生成应用程序的过程。同时,还将向读者介绍很多为 C# 2.0 独有的编译器选项,例如,extended/reference 标志和强名称支持。阅读完本文的内容之后,您将能够轻松地在没有向导的环境中生成单文件程序集和多文件程序集。适用于:Microsoft Visual C# 2.0注 本文假定您熟悉 C# 编程语转载 2014-05-04 16:18:02 · 992 阅读 · 0 评论 -
C# 中 List的好方法
1、Find object obj= list.Find ( delet )原创 2014-04-17 16:56:35 · 894 阅读 · 0 评论 -
C# 3.0新特性之扩展方法
C#3.0扩展方法是给现有类型添加一个方法。现在类型既可是基本数据类型(如int,String等),也可以是自己定义的类。//Demo--1//扩展基本类型namespace TestExtensionMethods{// 必须建一个静态类,用来包含要添加的扩展方法public static class Extensions{//要添加的扩展方法必须为一个静态方法//此转载 2014-04-14 22:57:39 · 848 阅读 · 0 评论 -
C# 命令行编译器详解
摘要:本文分析了使用 C# 命令行编译器 csc.exe 生成应用程序的过程。同时,还将向读者介绍很多为 C# 2.0 独有的编译器选项,例如,extended/reference 标志和强名称支持。阅读完本文的内容之后,您将能够轻松地在没有向导的环境中生成单文件程序集和多文件程序集。适用于:Microsoft Visual C# 2.0注 本文假定您熟悉 C# 编程语转载 2014-05-04 16:02:26 · 1263 阅读 · 0 评论 -
C# TreeView 节点的自定义绘制
if ((e.State & TreeNodeStates.Selected) != 0) { //演示为绿底白字 e.Graphics.FillRectangle(Brushes.DeepSkyBlue, e.Node.Bounds); Font nodeFon原创 2014-04-18 09:19:36 · 5242 阅读 · 0 评论 -
c++中数组名与函数的区别
文章转自http://tech.163.com/05/0823/11/1RR94CAS00091589.html引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一转载 2014-04-18 09:51:45 · 944 阅读 · 0 评论 -
C# 命令行编译器详解
摘要:本文分析了使用 C# 命令行编译器 csc.exe 生成应用程序的过程。同时,还将向读者介绍很多为 C# 2.0 独有的编译器选项,例如,extended/reference 标志和强名称支持。阅读完本文的内容之后,您将能够轻松地在没有向导的环境中生成单文件程序集和多文件程序集。适用于:Microsoft Visual C# 2.0注 本文假定您熟悉 C# 编程语转载 2014-05-04 16:14:46 · 4023 阅读 · 0 评论 -
using的用法
1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间。如:using system;2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详转载 2014-04-03 15:27:55 · 861 阅读 · 0 评论 -
序列化
简介序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。在面向对象的环境中实现序列化机制时,必须在易用性和灵活性之间进行一些权衡。只要您对此过程有足够的控制能力,就可以使该过程在很大程度上自动进行。例如,简单的二进制序转载 2014-04-18 17:40:33 · 815 阅读 · 0 评论 -
C# 的三种序列化方法
序列化是将一个对象转换成字节流以达到将其长期保存在内存、数据库或文件中的处理过程。它的主要目的是保存对象的状态以便以后需要的时候使用。与其相反的过程叫做反序列化。 序列化一个对象 为了序列化一个对象,我们需要一个被序列化的对象,一个容纳被序列化了的对象的(字节)流和一个格式化器。进行序列化之前我们先看看System.Runtime.Serialization名字空间。ISeri转载 2014-04-18 18:02:32 · 862 阅读 · 0 评论 -
C# Form Dispose 和 Close的区别
上午想做个简单的单件设计模式(Singleton)的小例子,结果出现了一些意想不到的问题。我的本意是建立两个窗体类Form1和Form2,在Form2上放置一个名为Button1的按钮,单击Button1会调出Form1的窗口事例,并且保证再单击Button1的时候,不会再弹出第二个Form1实例,除非关掉Form1实例并重新单击Button1,总之,保证只能弹出一个Form1实例(当然不是用模态转载 2014-04-03 15:18:19 · 13202 阅读 · 0 评论 -
C# 中的关键字 out ref
1、sealed 2、out原创 2014-04-17 09:10:42 · 905 阅读 · 0 评论 -
C#反射
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。 程序代码在编译后生成可执行的应用,我们首先要转载 2014-04-21 17:25:34 · 1209 阅读 · 0 评论 -
DataGridView 的样式
/// /// 设置grid交替行颜色 /// /// public static void SetGridAlternatingRows(DataGridView dg) { if (dg != null) { dg原创 2014-04-08 10:14:42 · 1180 阅读 · 0 评论 -
C# System.Guid.NewGuid()
概念GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID转载 2014-04-23 09:05:26 · 2348 阅读 · 0 评论 -
C# 遍历List 并删除某个元素
1、我们选择用for循环2、原创 2014-04-22 14:02:09 · 29183 阅读 · 1 评论 -
DataGridView 添加行
1、 int index = dataGridView1.Rows.Add(Row); dataGridView1.Rows[index].Cells[0].Value = dr[0].ToString(); dataGridView1.Rows[index].Cells[1转载 2014-04-09 08:57:52 · 1095 阅读 · 0 评论 -
.NET(C#):GetHashCode 的作用
今儿看到两位同学在讨论GetHashCode方法的执行,貌似他们的对象等同性判断挺复杂的,而又想把同样的逻辑写在GetHashCode中,然后激烈的讨论着用什么算法让GetHashCode返回的整数更具唯一性。我觉得简而言之GetHashCode的作用就是:尽量用最快的时间对对象进行初步判断。当然这里时间的快慢和判断的深度没有具体要求,只要没有走极端就可以(比如太费时间,或者判断深度太浅)转载 2014-04-10 21:51:44 · 5828 阅读 · 0 评论 -
.NET(C#):GetHashCode 的作用
今儿看到两位同学在讨论GetHashCode方法的执行,貌似他们的对象等同性判断挺复杂的,而又想把同样的逻辑写在GetHashCode中,然后激烈的讨论着用什么算法让GetHashCode返回的整数更具唯一性。我觉得简而言之GetHashCode的作用就是:尽量用最快的时间对对象进行初步判断。当然这里时间的快慢和判断的深度没有具体要求,只要没有走极端就可以(比如太费时间,或者判断深度太浅)转载 2014-04-10 21:53:44 · 4145 阅读 · 1 评论 -
C#——详析GetHashCode方法
GetHashCode函数一般是在操作HashTable或者Dictionary之类的数据集的时候被调用,目的是产生一个Key,为了方便在 HashTable或者 Dictionary中的检索。 每个类型,不管是值类型还是引用类型,都提供这个基本函数,同样也可以像重写ToString或者Equals函数一样去重写它。但是不建议重写此函数,而且在使用这个函数也需要加倍小心。转载 2014-04-10 22:54:18 · 51457 阅读 · 7 评论 -
SelectedIndexChanged事件, SelectedValueChanged事件和SelectionChangeCommitted事件的区别及应用
SelectionChangeCommitted事件在设定datasource和displaymember和valuemember时,以及手动改变combobox索引和值时都不触发该事件, 只是在界面选择combobox不同值时触发。SelectedIndexChanged事件 当 SelectedIndex 属性更改时发生,索引改变时触发。SelectedValueCh转载 2014-05-19 14:37:35 · 17207 阅读 · 1 评论 -
C# 数据类型后加问号
在C#中 我们某些数据类型的变量不可能为空,li转载 2014-05-21 09:16:35 · 3598 阅读 · 0 评论 -
C#遍历访问Dictionary和HashTable
一般地Dictionary是按照元素的添加顺序输出的,这和HashTable不同。Dictionary dictionary = new Dictionary();dictionary.Add(1, "xiaowang");dictionary.Add(21, "dsd");dictionary.Add(33, "dsfdfd");dictionary.Add(4, "li转载 2014-06-24 11:30:14 · 1035 阅读 · 0 评论 -
VS.NET打印页面设置(PageSetupDialog)页边距总是改变
问题:我在程序中使用.NET 1.1版的PageSetupDialog类进行页面设置,在出现的页面设置对话框中,页边距部分显示的单位是“页边距(毫米)”,可是实际显示在“左、右、上、下”后面的文本框中数字似乎是当前页边距以“十分之一英寸”为单位的数值,而不是以“毫米”为单位数值。要命的是,当你什么也没改动就按下“确定”键时,它却把显示在屏幕上的当前的以“十分之一英寸”为单位的页边距数值原创 2014-05-23 19:28:13 · 4169 阅读 · 1 评论 -
类的属性赋值失败
class A{ private Point pp=new Point(); pulic Point Position { get{return pp;} set{} }}原创 2014-07-23 09:42:12 · 1647 阅读 · 0 评论 -
DataRow的各种状态和DataView的两种过滤属性
一个DataRow对象刚被创建之后(DataTable.NewRow())其状态是Detached,是孤立的一个存在.所以建立了DataRow之后在DataRow中的单元填充了数据后还要通过DataTable.Rows.Add(DataRow)方法将此DataRow添加到DataTable,DataRow添加到DataTable后, 这个DataRow的状态就转变为Added。当修改了这个转载 2014-07-23 14:23:53 · 1273 阅读 · 0 评论 -
IEnumerable与IEnumerator在C#中的使用
一、示例:在C#中,凡是实现了IEnumerator接口的数据类型都可以用foreach语句进行迭代访问,可是,对于自定义类型如何实现这个接口以支持foreach的迭代呢? * 要实现这个功能,先来看看IEnumerable和IEnumerator接口的定义:public interface IEnumerable{ //IEnumerable只有一个方法,返转载 2014-07-24 15:06:56 · 969 阅读 · 0 评论 -
Array与ArrayList的关系与区别
一、数组与ArrayList的主要区别:效率、类型识别和primitive type。数组([]):最高效;但是其容量固定且无法动态改变;ArrayList:容量可动态增长;但牺牲效率;建议:首先使用数组,无法确定数组大小时才使用ArrayList!1.效率:数组扩容是对ArrayList效率影响比较大的一个因素。每当执行Add、AddRange、Insert、转载 2014-07-24 15:34:05 · 1096 阅读 · 0 评论 -
C#中数组、ArrayList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。数组 数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。[csharp] view plaincopy"font-family:SimSun;font-size:18px;">//数组转载 2014-07-24 15:35:16 · 1374 阅读 · 1 评论 -
覆盖、重写、重载
父类有方法 object fun(); 如果在子类中也定义方法object fun(); 则原创 2014-07-24 16:39:53 · 838 阅读 · 0 评论 -
VS软件版本号定义、规则和相关的Visual Studio插件
软件版本号主要标识了软件的版本,通过其可以了解软件、类库文件的当前版本,使得软件版本控制有所依据。我们就Windows系统和.NET Framework的编号规则来看,软件版本号的定义结构一般是这样:主版本号.子版本号.编译版本号.修正版本号我们也可以在项目属性上可以看到相关设置的界面,对应的英文名称分别为:major.minor.build.revisionMaj转载 2014-07-07 10:19:03 · 12316 阅读 · 0 评论 -
C# 类型基础
引言本文之初的目的是讲述设计模式中的 Prototype(原型)模式,但是如果想较清楚地弄明白这个模式,需要了解对象克隆(Object Clone),Clone其实也就是对象复制。复制又分为了浅度复制(Shallow Copy)和深度复制(Deep Copy),浅度复制 和 深度复制又是以 如何复制引用类型成员来划分的。由此又引出了 引用类型和 值类型,以及相关的对象判等、装箱、拆箱等基础转载 2014-07-25 14:17:17 · 1024 阅读 · 0 评论 -
拆箱和装箱
为了便于文章的开展,首先介绍装箱(Boxing)和拆箱(Unboxing)这两个名词。.Net的类型分为两种,一种是值类型,另一种是引用类型。这两个类型的本质区别,值类型数据是分配在栈中,而引用类型数据分配在堆上。那么如果要把一个值类型数据放到堆上,就需要装箱操作;反之,把一个放在堆上的值类型数据取出来,则需要进行拆箱操作。 例如,对于如下简单的装箱和拆箱操作语句。 int i转载 2014-07-25 17:41:14 · 711 阅读 · 0 评论 -
C# 模仿玻璃按钮
两张透明的png图片(尺寸73 x 81),一张用于鼠标进入控件时显示,一张用于鼠标单击控件时显示。 新建自定义控件,在构造函数中添加代码转载 2014-07-25 14:57:32 · 4043 阅读 · 0 评论