首页 技术教程 实用代码 注册破解 正则表达式 网址导航 电子书籍

C#:什么时候应该使用var?

C# 3新增了关键字“var”。在编译器能明确判断变量的类型时,它允许对本地类型进行推断。然而,对于何时应该使用它却存在某些争论。 开发IDE工具的公司ReSharper的Ilya Ryzhenkov总结了使用var的一些好处 : 1. 它有利于更好地为本地变量命名。2. 它有利于设计更好的API。3. 它促使对变量进行初始化。4. 它消除了代码的混乱。5. 它不需要using指示符。RSS Bandit的Dare Obasanjo对此则不敢苟同。由于var给他的开源项目(译注:RSS Bandit项目使用了ReSharper)带来了不利影响,他随后发表了对Ryzhenkov观点的回应 。他回击道:有趣的是,这里列出的所有“好处”,主要针对的不仅是形式上的改进,而且...
类别:程序开发 - C#/.NET    查看:97    更新:2014-05-17

Visual C#如何使用Active X组件

Active X组件是充分利用OLE和Active X技术的自定义组件,微软公司积极鼓励把Active X作为一个与应用程序无关的自定义组件。从本质上说,Active X组件是一个Active X服务器,他能够提供所有的OLE功能和服务,可视化编辑、拖放和OLE自动化。ActiveX控件有属性(Propertiy)、方法(method)、事件(Event)三个元素构成,他一般是以“DLL”扩展名的形式出现的。这时细心的读者可能已经注意到在.Net FrameWork SDK中的类库中的类库文件也是以“DLL”扩展名的形式出现的。那么这二种“DLL”是一种类型的么?答案是否定的。这是因为这些Net FrameWork SDK中的类库是由Com...
类别:程序开发 - C#/.NET    查看:98    更新:2014-05-17

c#之内存管理

1、内存管理 c#编程的一个优点是程序员不需要关心具体的内存管理,尤其是垃圾收集器会处理所有的内存清理工作。虽然不必手工管理内存,但如果要编写高质量的代码,还是要理解后台发生的事情,理解c#的内存管理。本文主要介绍给变量分配内存时计算机内存中发生的情况。 c#将数据分为两种:值数据类型和引用数据类型,这两种数据类型存储在内存中的不同的地方:值数据类型存储在堆栈中,而引用类型存储在内存的托管堆中。 一、内存简介 Windows使用一个系统:虚拟寻址系统。这个系统的作用是将程序可用的内存地址映射到硬件内存中的实际地址上。其实际结果就是32位的机子上每个进程都可以使用4GB的内存,当然,64位机这个数字就大了去了。这4GB...
类别:程序开发 - C#/.NET    查看:102    更新:2014-05-17

c#中PictureBox的基本使用方法

下面的四个事件一定要绑定,不绑定的话是没有任何效果的。。。private Point m_ptStart = new Point(0, 0); private Point m_ptEnd = new Point(0, 0); // true: MouseUp or false: MouseMove private bool m_bMouseDown = false; private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Left) { return; } if (!m_bMouseDown) { m_ptStart = new Point(e.X, e.Y); m_ptEnd = new Point(e.X, e.Y); } m_bMouseDown = !m_bMouseDown; } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Left) {...
类别:程序开发 - C#/.NET    查看:94    更新:2014-05-17

C#正则表达式经典分类整理

有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的《C#字符串和正则表达式参考手册》学习了一些基础的知识,同时也为我在CSDN大概赚了1000分,今天想起来,去找《C#字符串和正则表达式参考手册》时,已经不知所踪了。现在用到正则的时候也比较少,把以前的笔记等整理一下,以志不忘。 (1)“@”符号 符下两ows表研究室的火热,当晨在“@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个...
类别:程序开发 - C#/.NET    查看:96    更新:2014-05-17

C#中常用的分页存储过程总绪

表中主键必须为标识列,[ID] int IDENTITY (1,1)//每次自增一 1.分页方案一:(利用Not In和SELECT TOP分页) 语句形式: SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY id)) ORDER BY ID SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 页大小*页数 id FROM 表 ORDER BY id)) ORDER BY ID 2.分页方案二:(利用ID大于多少和SELECT TOP分页) 语句形式: SELECT TOP 10 * FROM TestTable WHERE (ID ...
类别:程序开发 - C#/.NET    查看:118    更新:2014-05-17

C#调用WMI更改本地网络IP设置

因家中与公司的网络配置不同,而我又是带着我的笔记本在家里与公司来来回回.这就导致要经常设置不同的IP和网关数据,一段时间下来后觉得特烦,做为一个程序员.为什么不好好利用自己的知识偷懒一下呢?特别是像我这样一个懒惰的人... 因为网络IP设置是要涉及到硬件,C#是没有现成接口调用的.只能通过调用API或者是WMI这道系统提供给我们的桥梁..在WMI这个大库中用于管理网络配置的则主要是通过"Win32_NetworkAdapterConfiguration"这个管理类.这里面已基本包括了IP,DNS,网关的设置信息... 在C#中使用WMI是很轻松的事情.下面直接给出C#实现代码,呵呵,我的文字表达能力很差,所以我也不多说了,代码量很少,看起来应该...
类别:程序开发 - C#/.NET    查看:109    更新:2014-05-17

C#禁止应用程序同时运行的方法

using System; using System.Collections.Generic; using System.Windows.Forms; namespace SingleProcessStart { static class Program { /// <summary> /// 应用程序的主入口点。/// </summary> // //使用STAThread属性将程序的默认线程模型指定为单线程模型。 //注意,线程模型只影响使用COM interop的应用程序,将这个属性应用于不使用COM interop的程序将不会产生任何效果。 [STAThread] //[MTAThreadAttribute] static void Main() { ////原始 //Application.EnableVisualStyles(); //Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Form1()); //...
类别:程序开发 - C#/.NET    查看:120    更新:2014-05-17

在C#中ref和out的区别

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。注:在C#中,方法的参数传递有四种类型:传值(by value),传址(by reference),输出参数(by outp...
类别:程序开发 - C#/.NET    查看:80    更新:2014-05-17

C#索引指示器

本节课将介绍C#的索引指示器,其目的包括:1.了解什么是索引指示器2.如何实现索引指示器3.重载索引指示器4.了解如何实现多参数的索引指示器索引指示器并不难使用。它们的用法跟数组相同。在一个类内部,你可以按照你的意愿来管理一组数据的集合。这些对象可以是类成员的有限集合,也可以是另外一个数组,或者是一些复杂的数据结构。不考虑类的内部实现,其数据可以通过使用索引指示器来获得。如下是一个例子: 1.清单 11-1. 索引指示器的例子:IntIndexer.csusing System;/// /// A simple indexer example./// class IntIndexer{private string[] myData;public IntIndexer(int size){myData = new string[size];for (int i=0; ...
类别:程序开发 - C#/.NET    查看:98    更新:2014-05-17

C#类的继承

本节课将介绍C#中的继承,其目的如下:1.基类的实现2.类的继承3.在派生类中初始化基类4.如何调用基类成员5.如何覆盖基类成员继承是面向对象程序设计的主要特征之一,它可以让你重用代码,可以节省程序设计的时间。1.清单8-1 继承: BaseClass.csusing System;public class ParentClass{public ParentClass(){Console.WriteLine("Parent Constructor.");}public void print(){Console.WriteLine("I'm a Parent Class.");}}public class ChildClass : ParentClass{public ChildClass(){Console.WriteLine("Child Constructor.");}public static void Main(){ChildClass child = ne...
类别:程序开发 - C#/.NET    查看:81    更新:2014-05-17

C#多态性

本节课将介绍C#的多态性,其目的包括:1.了解什么是多态性2.如何定义一个虚方法3.如何重载一个虚方法4.如何在程序中运用多态性面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。 可以把一组对象放到一个数组中,然后调用它们的方法,在这种场合下,多态性作用就体现出来了,这些对象不必是相同类型的对象。当然,如果它们都继承自某个类,你可以把这些派生类,都放到一个数组中。 如果这些对象都有同名方法,就可以调用每个对象的同名方法。本节课将向你介绍如何完成这些事情。1.清单9-1. 带有虚方法的基类:DrawingObject.csusing System;public class DrawingObject{public ...
类别:程序开发 - C#/.NET    查看:81    更新:2014-05-17

C#属性

本节课将介绍C#的属性,其目的包括:1.理解什么是属性2.如何实现属性3.创建一个只读属性4.创建一个只写属性属性是C#中独具特色的新功能。通过属性来读写类中的域,这具有一定的保护功能。在其它语言中,这是通过实现特定的getter和setter方法来实现的。C#的属性具有保护功能,可以让你就象访问域一样访问属性。要了解属性的用法,我们先来看看如何用传统的方法对域进行封装。1.清单 10-1. 传统的访问类的域的例子:Accessors.csusing System;public class PropertyHolder{private int someProperty = 0;public int getSomeProperty(){return someProperty;}public void setSomeProperty(int propValue){someProperty = propValue...
类别:程序开发 - C#/.NET    查看:105    更新:2014-05-17