C#
听音乐就好
这个作者很懒,什么都没留下…
展开
-
用SqlCommandBuilder 实现批量更新
一般是这样的,如果用设计器将SqlDataAdapter拖到页面中使用时,不会出现SqlDataAdapter.Update(ds)更新时出错情况,因为系统会自动生成SqlDataAdapter的属性命令,比如: .UpdateCommane insertCommand sel原创 2011-09-09 11:11:04 · 445 阅读 · 0 评论 -
new 运算符(C# 参考)
<br />用于创建对象和调用构造函数。例如:复制Class1 obj = new Class1();<br />还可用于创建匿名类型的实例:复制var query = from cust in customers select new {Name = cust.Name, Address = cust.PrimaryAddress};<br />new 运算符还用于调用值类型的默认构造函数。例如:复制int i = new int();<br />在上一个语句中,i转载 2010-08-29 10:56:00 · 496 阅读 · 0 评论 -
修饰符(C# 参考)
<br />修饰符用于修改类型和类型成员的声明。本节介绍 C# 修饰符:<br />修饰符<br />用途<br />访问修饰符<br />public<br />private<br />internal<br />protected<br />指定声明的类型和类型成员的可访问性。<br />abstract<br />指示某个类只能是其他类的基类。<br />const<br />指定无法修改字段或局部变量的值。<br />event<br />声明事件。<br />extern<br />指示在外部实转载 2010-08-28 20:13:00 · 330 阅读 · 0 评论 -
jn
namespace WrapTwoInterfaceEvents{ using System; public interface IDrawingObject { // Raise this event before drawing // the object. event EventHandler OnDraw; } public interface IShape {转载 2010-08-28 19:47:00 · 387 阅读 · 0 评论 -
接口中的索引器(C# 编程指南)
<br />索引器可在 接口(C# 参考) 上声明。接口索引器的访问器与类索引器的访问器具有以下方面的不同:<br />接口访问器不使用修饰符。<br />接口访问器没有体。<br />因此,访问器的用途是指示索引器是读写、只读还是只写。<br />以下是接口索引器访问器的示例:<br />public interface ISomeInterface{ //... // Indexer declaration: string this[int index]转载 2010-08-28 19:22:00 · 362 阅读 · 0 评论 -
How to: Explicitly Implement Interface Members with Inheritance (C# Programming Guide)
<br />显式接口实现还允许程序员实现具有相同成员名称的两个接口,并为每个接口成员各提供一个实现。本示例同时以公制单位和英制单位显示框的尺寸。Box 类实现 IEnglishDimensions 和 IMetricDimensions 两个接口,它们表示不同的度量系统。两个接口有相同的成员名称 Length 和 Width。<br />// Declare the English units interface:interface IEnglishDimensions{ float Le转载 2010-08-28 17:15:00 · 353 阅读 · 0 评论 -
abstract(C# 参考)
<br />interface I{ void M();}abstract class C : I{ public abstract void M();} abstract 修饰符指示所修饰的内容缺少实现或未完全实现。abstract 修饰符可用于类、方法、属性、索引器和事件。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。<br />示例<br /><br />在此例中,转载 2010-08-29 14:33:00 · 395 阅读 · 0 评论 -
new(C# 参考)
<br />在 C# 中,new 关键字可用作运算符、修饰符或约束。new 运算符<br />用于创建对象和调用构造函数。new 修饰符<br />用于向基类成员隐藏继承成员。new 约束<br />用于在泛型声明中约束可能用作类型参数的参数的类型。转载 2010-08-29 10:53:00 · 353 阅读 · 0 评论 -
Interface Properties (C# Programming Guide)
<br />可以在接口(C# 参考)上声明属性。以下是接口索引器访问器的示例:<br />public interface ISampleInterface{ // Property declaration: string Name { get; set; }}<br />接口属性的访问器不具有体。因此,访问器的用途是指示属性是否为读写、只读或只写。<br />示例<br /><br />在此例中,接口 IEmp转载 2010-08-28 18:48:00 · 610 阅读 · 0 评论 -
How to: Explicitly Implement Interface Members with Inheritance (C# Programming Guide)
<br />显式接口实现还允许程序员实现具有相同成员名称的两个接口,并为每个接口成员各提供一个实现。本示例同时以公制单位和英制单位显示框的尺寸。Box 类实现 IEnglishDimensions 和 IMetricDimensions 两个接口,它们表示不同的度量系统。两个接口有相同的成员名称 Length 和 Width。<br />// Declare the English units interface:interface IEnglishDimensions{ float Le转载 2010-08-28 17:14:00 · 361 阅读 · 0 评论 -
How to: Explicitly Implement Interface Members with Inheritance (C# Programming Guide)
<br />显式接口实现还允许程序员实现具有相同成员名称的两个接口,并为每个接口成员各提供一个实现。本示例同时以公制单位和英制单位显示框的尺寸。Box 类实现 IEnglishDimensions 和 IMetricDimensions 两个接口,它们表示不同的度量系统。两个接口有相同的成员名称 Length 和 Width。<br />// Declare the English units interface:interface IEnglishDimensions{ float Le转载 2010-08-28 17:12:00 · 371 阅读 · 0 评论 -
How to: Explicitly Implement Interface Members (C# Programming Guide)
<br />本示例声明一个 接口IDimensions 和一个类 Box,该类显式实现接口成员 getLength 和 getWidth。通过接口实例 dimensions 访问这些成员。示例:<br />interface IDimensions{ float getLength(); float getWidth();}class Box : IDimensions{ float lengthInches; float widthInches;转载 2010-08-28 17:10:00 · 477 阅读 · 0 评论 -
接口
<br />接口只包含方法、属性、事件或索引器的签名。实现接口的类或结构必须实现接口定义中指定的接口成员。在下面的示例,类 ImplementationClass 必须实现一个不具有参数并返回 void 的名为 SampleMethod 的方法。<br />interface ISampleInterface{ void SampleMethod();}class ImplementationClass : ISampleInterface{ // Explicit转载 2010-08-28 16:40:00 · 304 阅读 · 0 评论 -
ThreadPool 线程池[c#]
<br />ThreadPool(线程池)是一个静态类,它没有定义任何的构造方法(),我们只能够使用它的静态方法,这是因为,这是因为ThreadPool是托管线程池,是由CLR管理的。<br />ThreadPool使用WaitCallback委托,它所要做的工作是在后台进行的。使工作项的排队和运行更容易,可以给工作者线程传递一个状态对象(提供数据)。状态对象是私有的作用域位于线程层,所以不需要进行同步。<br />ThreadPool目标是为了减除线程的初始化开销,实现并行处理。.NET类库中的Threa转载 2010-08-24 13:12:00 · 962 阅读 · 0 评论 -
C#多线程学习(六) 互斥对象
<br />如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。 我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,如果它等待的Mutex对象被释放了,它就自动拥有这个对象,直到它调用Mutex.ReleaseMutex()转载 2010-08-24 14:46:00 · 305 阅读 · 0 评论 -
C#多线程学习(五) 多线程的自动管理(定时器)
<br />Timer类:设置一个定时器,定时执行用户指定的函数。 定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。 初始化一个Timer对象: Timer timer = new Timer(timerDelegate, s,1000, 1000); // 第一个参数:指定了TimerCallback 委托,表示要执行的方法; // 第二个参数:一个包含回调方法要使用的信息的对象,或者为空引用; // 第三个参数:延迟时间——计时开始的时刻距现在的时间,单位是毫秒,指定为“0”表示立即启动计转载 2010-08-24 13:54:00 · 332 阅读 · 0 评论 -
C#值类型与引用类型
<br />在开始介绍C#中的数据类型之前,理解C#把数据类型分为两种是非常重要的:<br /> 值类型<br />引用类型<br />下面将详细介绍值类型和引用类型的语法。从概念上看,其区别是值类型直<br />接存储其值,而引用类型存储对值的引用。<br />这两种类型存储在内存的不同地方:值类型存储在堆栈中,而引用类型存储<br />在托管堆上。注意区分某个类型是值类型还是引用类型,因为这种存储位置的不<br />同会有不同的影响。<br />例如,int 是值类型,这表示下面的语句会在内存的两个地方转载 2010-08-25 15:51:00 · 358 阅读 · 0 评论 -
C#线程池
<br />许多应用程序使用多个线程,但这些线程经常在休眠状态中耗费大量的时间来等待事件发生。其他线程可能进入休眠状态,并且仅定期被唤醒以轮询更改或更新状态信息,然后再次进入休眠状态。为了简化对这些线程的管理,.NET框架为每一个进程提供了一个线程池,使应用程序能够根据需要来有效地利用多个线程。一个线程监视排到线程池的若干个等待操作的状态。当一个等待操作完成时,线程池中的一个辅助线程就会执行对应的回调函数。线程池中的线程由系统进行管理,程序员不需要费力于线程管理,可以集中精力处理应用程序任务。<br />线转载 2010-08-24 13:07:00 · 634 阅读 · 0 评论 -
类(C# 编程指南)
<br />“类”是一种构造,通过使用该构造,您可以将其他类型的变量、方法和事件组合在一起,从而创建自己的自定义类型。类就像一个蓝图,它定义类型的数据和行为。如果类没有声明为静态类,客户端代码就可以创建赋给变量的“对象”或“实例”,从而使用该类。在对变量的所有引用都超出范围之前,该变量始终保持在内存中。所有引用都超出范围时,CLR 将标记该变量以供垃圾回收。如果类声明为静态类,则内存中只存在一个副本,并且客户端代码只能通过该类自身而不是“实例变量”访问该类。有关更多信息,请参见静态类和静态类成员(C# 编程转载 2010-08-29 13:23:00 · 349 阅读 · 0 评论 -
override (C# Reference)
<br />要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。<br />示例<br /><br />在此示例中,Square 类必须提供 Area 的重写实现,因为 Area 继承自抽象的 ShapesClass:<br />abstract class ShapesClass{ abstract public int Area();}class Square : ShapesClass{ int side = 0;转载 2010-08-29 14:44:00 · 473 阅读 · 0 评论 -
接口(C# 编程指南)
<br />接口使用 interface 关键字进行定义,如下面的示例所示:<br />interface IEquatable<T><br />{<br /> bool Equals(T obj);<br />}<br />接口描述的是可属于任何类或结构的一组相关功能。接口可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。接口不能包含字段。接口成员一定是公共的。<br />当类或结构继承接口时,意味着该类或结构为该接口定义的所有成员提供实现。接口本身不提供类或结构能够以继承基类功能的方式继转载 2010-08-28 17:00:00 · 310 阅读 · 0 评论 -
c# 中DataSet示例
1.获取信息 #region 产生学生列表 /// /// 产生学生列表 /// private void GenStudentList(string strStu) {原创 2011-09-09 10:56:59 · 802 阅读 · 0 评论 -
SqlDataReader 示例
#region 产生树形节点,并展开 /// /// 产生树形节点,并展开 /// public void GenNodes() {//产生树形节点,并展开 t原创 2011-09-08 15:14:20 · 658 阅读 · 0 评论 -
Visual Studio 2010 编辑器中的新增功能
<br />Visual Studio 2010 中的新增功能<br />增强的停靠行为<br />文档窗口不再受限于集成开发环境 (IDE) 的编辑框架。现在,您可以将文档窗口停靠在 IDE 的边缘,或者将它们移动到桌面(包括辅助监视器)上的任意位置。如果打开并显示两个相关的文档窗口(例如同一 Windows 窗体的设计器视图和编辑器视图),则在一个窗口中所做的更改将立即反映在另一个窗口中。<br />现在可以自由移动工具窗口,使它们停靠在 IDE 的边缘、浮动在 IDE 的外部或者填充部分或全部文档框架转载 2010-09-06 18:57:00 · 726 阅读 · 0 评论 -
静态类和静态类成员(C# 编程指南)
<br />静态类与非静态类基本相同,但存在一个区别:静态类不能实例化。也就是说,不能使用 new 关键字创建静态类类型的变量。因为没有实例变量,所以要使用类名本身访问静态类的成员。例如,如果名为 UtilityClass 的静态类有一个名为 MethodA 的公共方法,则按下面的示例所示调用该方法:<br />UtilityClass.MethodA();<br /><br />与所有类类型一样,加载引用静态类的程序时,.NET Framework 公共语言运行时 (CLR) 将加载该静态类的类型信息。转载 2010-08-29 13:39:00 · 340 阅读 · 0 评论 -
static(C# 参考)
<br />使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。有关更多信息,请参见静态类和静态类成员(C# 编程指南)。<br />示例<br /><br />下面的类声明为 static,并且只包含 static 方法:<br /> static class CompanyEmployee { public static void DoS转载 2010-08-29 13:33:00 · 373 阅读 · 0 评论 -
使用 Override 和 New 关键字进行版本控制(C# 编程指南)
<br />C# 语言经过专门设计,以便不同库中的基类与派生类之间的版本控制可以不断向前发展,同时保持向后兼容。这具有多方面的意义。例如,这意味着在基类中引入与派生类中的某个成员具有相同名称的新成员在 C# 中是完全支持的,不会导致意外行为。它还意味着类必须显式声明某方法是要重写一个继承方法,还是一个隐藏具有类似名称的继承方法的新方法。<br />在 C# 中,派生类可以包含与基类方法同名的方法。<br />基类方法必须定义为 virtual。<br />如果派生类中的方法前面没有 new 或 overri转载 2010-08-29 10:32:00 · 322 阅读 · 0 评论 -
virtual(C# 参考)
<br />virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。例如,此方法可被任何继承它的类重写。复制public virtual double Area() { return x * y;}<br />虚拟成员的实现可由派生类中的重写成员更改。有关如何使用 virtual 关键字的更多信息,请参见使用 Override 和 New 关键字进行版本控制(C# 编程指南)和了解何时使用 Override 和 New 关键字(C# 编程指南)。备注<转载 2010-08-29 10:23:00 · 379 阅读 · 0 评论 -
可访问性级别(C# 参考)
<br />使用访问修饰符 public、protected、internal 或 private 可以为成员指定以下声明的可访问性之一。<br />声明的可访问性<br />含义<br />public<br />访问不受限制。<br />protected<br />访问仅限于包含类或从包含类派生的类型。<br />internal<br />访问仅限于当前程序集。<br />protectedinternal<br />访问仅限于从包含类派生的当前程序集或类型。<br />private<br />访转载 2010-08-28 20:32:00 · 465 阅读 · 0 评论 -
修饰符(C# 参考)
<br />修饰符用于修改类型和类型成员的声明。本节介绍 C# 修饰符:<br />修饰符<br />用途<br />访问修饰符<br />public<br />private<br />internal<br />protected<br />指定声明的类型和类型成员的可访问性。<br />abstract<br />指示某个类只能是其他类的基类。<br />const<br />指定无法修改字段或局部变量的值。<br />event<br />声明事件。<br />extern<br />指示在外部实转载 2010-08-28 20:15:00 · 428 阅读 · 0 评论 -
如何:实现接口事件(C# 编程指南)
<br />接口可声明事件。下面的示例演示如何在类中实现接口事件。实现接口事件的规则与实现任何接口方法或属性的规则基本相同。在类中实现接口事件<br />在类中声明事件,然后在适当的区域调用该事件。<br />namespace ImplementInterfaceEvents{ public interface IDrawingObject { event EventHandler ShapeChanged; } public class My转载 2010-08-28 19:38:00 · 356 阅读 · 0 评论 -
How to: Explicitly Implement Interface Members with Inheritance (C# Programming Guide)
<br />显式接口实现还允许程序员实现具有相同成员名称的两个接口,并为每个接口成员各提供一个实现。本示例同时以公制单位和英制单位显示框的尺寸。Box 类实现 IEnglishDimensions 和 IMetricDimensions 两个接口,它们表示不同的度量系统。两个接口有相同的成员名称 Length 和 Width。<br />// Declare the English units interface:interface IEnglishDimensions{ float Le转载 2010-08-28 17:27:00 · 283 阅读 · 0 评论 -
How to: Explicitly Implement Interface Members with Inheritance (C# Programming Guide)
<br />显式接口实现还允许程序员实现具有相同成员名称的两个接口,并为每个接口成员各提供一个实现。本示例同时以公制单位和英制单位显示框的尺寸。Box 类实现 IEnglishDimensions 和 IMetricDimensions 两个接口,它们表示不同的度量系统。两个接口有相同的成员名称 Length 和 Width。<br />// Declare the English units interface:interface IEnglishDimensions{ float Le转载 2010-08-28 17:16:00 · 326 阅读 · 0 评论 -
显式接口实现(C# 编程指南)
<br />如果类实现两个接口,并且这两个接口包含具有相同签名的成员,那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。例如:<br />interface IControl{ void Paint();}interface ISurface{ void Paint();}class SampleClass : IControl, ISurface{ // Both ISurface.Paint and IControl.Paint ca转载 2010-08-28 16:47:00 · 349 阅读 · 0 评论 -
sealed(C# 参考)
<br />当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。复制 class A {} sealed class B : A {}<br />还可以在重写基类中的虚方法或虚属性的方法或属性上使用 sealed 修饰符。这将使您能够允许类从您的类继承,并防止它们重写特定的虚方法或虚属性。<br />示例<br /><br />在下面的示例中,Z 从 Y 继承,但 Z 无法重写在 X 中声转载 2010-08-29 14:40:00 · 515 阅读 · 0 评论 -
如何:了解向方法传递结构和向方法传递类引用之间的区别(C# 编程指南)
<br />本示例演示在向方法传递结构时,传递的是该结构的副本,而在传递类实例时,传递的是一个引用。<br />本示例的输出表明:当向 ClassTaker 方法传递类实例时,只更改类字段的值。但是向 StructTaker 方法传递结构实例并不更改结构字段。这是因为向 StructTaker 方法传递的是结构的副本,而向 ClassTaker 方法传递的是对类的引用。<br />示例<br />class TheClass{ public string willIChange;}转载 2010-08-29 13:02:00 · 411 阅读 · 0 评论 -
使用结构(C# 编程指南)
<br />struct 类型适于表示 Point、Rectangle 和 Color 等轻量对象。尽管使用自动实现的属性将一个点表示为类同样方便,但在某些情况下使用结构更加有效。例如,如果声明一个 1000 个 Point 对象组成的数组,为了引用每个对象,则需分配更多内存;这种情况下,使用结构可以节约资源。因为 .NET Framework 包含一个名为 Point 的对象,所以本示例中的结构命名为“CoOrds”。<br />public struct CoOrds{ public in转载 2010-08-29 12:59:00 · 440 阅读 · 0 评论 -
了解何时使用 Override 和 New 关键字(C# 编程指南)
<br />C# 允许派生类中的方法与基类中的方法具有相同的名称,只要您非常明确应如何处理新方法。下面的示例演示 new 和 override 关键字的使用。<br />首先声明三个类:一个名为 Car 的基类以及从该基类派生的两个类 ConvertibleCar 和 Minivan。基类包含一个可将有关汽车的描述发送到控制台的方法 (DescribeCar)。派生类方法也包含一个名为 DescribeCar 的方法,该方法显示派生类的独特属性。这些方法还调用基类的 DescribeCar 方法来演示从 C转载 2010-08-29 10:51:00 · 336 阅读 · 0 评论 -
线程本地存储(Thread Local Storage TLS)
<br />在.NET程序中,静态变量是全局(整个应用程序域)可见的数据,一个普通的静态变量对于应用程序域内的所有线程都是可见并且是可访问的。 TLS是指存储在线程环境块内的一个结构,用来存放该线程内独享的数据。进程内的线程不能访问不属于自己的TLS,这就保证了TLS内的数据在线程内是全局共享的,而对于线程外却是不可见的。<br />using System; using System.Collections.Generic; using System.Linq; using S转载 2010-08-23 13:24:00 · 503 阅读 · 0 评论 -
如何设置当前线程的共享数据?
<br />具体一点说就是在当前线程中设置指定数据并在当前线程内共享该数据,最主要的问题是该数据仅仅共享于当前的线程,线程间只会取得属于该线程的共享数据,举 个例子来说明这样的应用,最典型的示例就是HttpContext.Current这个应用,这个对象是在Web中经常用到的一个对象,通过一个静态方法 获得属于当前的HttpContext对象,Web的每一个Request请求都是单独的处于不同线程中,那么他们之间的Request等对象都是仅限于 当前线程中使用,通过这种方法使得各个Request之间互相独立转载 2010-08-23 13:00:00 · 794 阅读 · 0 评论