c#基础
文章平均质量分 74
nuaalfm
这个作者很懒,什么都没留下…
展开
-
一道跟静态成员有关的面试题
今天有人问我一道面试题class Class1 ...{ public static int i = GetNum(); private static int num=1; public static int GetNum() ...{ return num; } public int原创 2007-08-01 22:30:00 · 855 阅读 · 0 评论 -
正则表达式的贪婪和懒惰的表达式
正则表达式引擎将会尽可能的匹配更多的字符。正则表达式引擎遇到一个重复字符时,只要表达式的特定成分允许,他将从左到右开始搜索。例如,/d*3将进行数字匹配,一直到没有更多的数字能够匹配为止。获得了尽可能多的数字后,引擎将试图匹配3。static string partten = @"/d*3"; public static void test() ...{原创 2007-08-11 21:07:00 · 1265 阅读 · 2 评论 -
统计代码行数源码
public static long LineCount(string source) ...{ string text=source; long numOfLines=0; if (source != null) ...{ FileStream FS = new原创 2007-08-13 10:54:00 · 941 阅读 · 0 评论 -
反思.NET中的反射机制
来源:博客园 清晰的组件化目标是否因在库间共享过多类型信息而落空?或许您需要高效的强类型化数据存储,但如果每次对象模型发展后都需要更新您的数据库架构,那会耗费很大成本,所以您更愿意在运行时推断出其类型架构吗?您需要交付能接受任意用户对象的组件,并以某种智能化的方式处理它们吗?您希望库的调方者能以编程方式向您说明它们的类型吗? 如果您发现自己在苦苦维持强类型化数据结构的同时,又冀望于最大化运行转载 2007-08-21 11:25:00 · 626 阅读 · 0 评论 -
代码段(Code Snippets)
1.前言开发人员不喜欢打字。如果你希望提高开发人员的生产力,减少键入的数量,这也同时减少打字稿的数量以及因此产生的编译器错误,这些都极大分散了开发人员的注意力。代码重用是开发人员收集代码的另一个原因。即使单个应用程序也会大量地由小而公共的代码段组成,在几乎每个程序中都会有相同的代码元素:循环、类、异常处理等等。开发人员传统上是对代码进行剪切和粘贴以避免重复键入。但是这具有相当的局限性,包转载 2007-09-05 01:29:00 · 3016 阅读 · 1 评论 -
委托的简单例子
委托是函数的封装,它代表一“类”函数。他们都符合一定的签名:拥有相同的参数列表、返回值类型。同时委托也可以看作是对函数的抽象,是函数的“类”。此时,委托是实例代表一个具体的函数。现定义一个书类,其中定义了价格,随着季节的改变可能有不同的折扣,希望可以灵活替换折扣 public class Book ...{ public delegate double Get原创 2007-09-14 22:53:00 · 1168 阅读 · 0 评论 -
在ASP.NET中调用存储过程方法新解
摘要 存储过程的调用在B/S系统中用的很多。传统的调用方法不仅速度慢,而且代码会随着存储过程的增多不断膨胀,难以维护。新的方法在一定程度上解决了这些问题。关键词 ASP.NET;存储过程在使用.NET的过程中,数据库访问是一个很重要的部分,特别是在B/S系统的构建过程中,数据库操作几乎成为了一个必不可少的操作。调用存储过程实现 数据库操作使很多程序员使用的方法,而且大多数的程序员都是能使用存储过程转载 2007-09-26 01:26:00 · 695 阅读 · 0 评论 -
刚用.net写了一个自动投票程序
前天接到我哥的电话,说让我帮忙写个投票的程序要为他的一个朋友在网上投票,这种作弊行为我向来是不耻的,但是为了我哥的面子就硬着头皮开始干了。本来以为分分钟可以搞定的小程序,但是因为服务器是.net做的,挺麻烦,感冒好几天了,前天达到了高潮,头疼乏力,于是暂时搁置,洗洗睡了。昨天晚上开弄的,开始想用javascrippt来做,但是因为框架跨域不能访问,再加上javascript实在难于调试,于是改用.原创 2007-10-19 14:46:00 · 2850 阅读 · 3 评论 -
c#加密解密文件
加密文件要加密文件,请按照下列步骤操作: 1. 启动 Visual Studio 2005 或 Visual Studio .NET。 2. 单击“项目”下的“Visual C#”,然后单击“模板”下的“控制台应用程序”。Visual C# .NET 为您创建一个静态类,以及一个空的 Main() 过程。 3. 对以下命名空间使用 using 语句(如以下示例代码中所示): • System转载 2007-09-26 01:31:00 · 1590 阅读 · 0 评论 -
C#索引器
访问类中的集合,希望好像类本身就是一个数组一样索引器是一种c#的语法构造,可以用我们熟悉的数组方括号语法访问类中的集合语法:类型 this[类型 参数] {get;set;}public class ListBoxTest ...{ private string[] strings; private int ctr = 0 ; public原创 2007-08-08 22:42:00 · 989 阅读 · 0 评论 -
C#操作符重载
操作符重载是指允许用户使用用户定义的类型编写表达式的能力。 例如,通常需要编写类似于以下内容的代码,以将两个数字相加。很明显,sum 是两个数字之和。int i = 5; int sum = i + j; 如果可以使用代表复数的用户定义的类型来编写相同类型的表达式,那当然是最好不过了: Complex i = 5;Complex sum = i + j;运算符重载允许为用户定义的类型重载(即指定原创 2007-08-08 22:34:00 · 3087 阅读 · 1 评论 -
.net事件模式
1、定义一个类型用于保存所有需要发送给事件通知接受者的附加信息(继承于System.EventArgs)2、定义一个委托类型,用于指定事件触发时被调用的方法类型3、定义一个事件成员4、定义一个受保护的虚方法,负责通知事件的登记对象5、定义一个方法,将输入转化为期望的事件public class MailManager ...{ //1、定义一个类型用于保存所有需要发送给原创 2007-08-13 16:10:00 · 1109 阅读 · 0 评论 -
c#面向对象
面向对象的特性各种面向对象编程语言相互有别,但都能看到它们对面向对象三大机制的支持,即: “封装、继承、多态”– 封装,隐藏内部实现– 继承,复用现有代码– 多态,改写对象行为 使用面向对象编程语言(如C#),可以推动程序员以面向对象的思维来思考软件设计结构,从而强化面向对象的编程范式。C#是一门支持面向对象编程的优秀语言,包括:各种级别的封装支持;单实现继承+多接口实现;抽象方法与虚方法重写。原创 2007-08-05 22:54:00 · 1094 阅读 · 0 评论 -
抽象类
抽象类在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角原创 2007-08-05 23:19:00 · 1011 阅读 · 1 评论 -
C#实现多接口
一个类可以从多个接口中派生出来,当一个类从定义了相同方法的两个或多个接口中派生时,你有两种选择:第一种是将两个接口方法引导到同一种方法实现中,第二种是提供不同的方法实现(利用显示实现)interface IMyInterface ...{ void Method1(); } interface IMyOtherInterface ...{原创 2007-08-06 23:56:00 · 11404 阅读 · 2 评论 -
面向对象设计原则(C#版一)
OOPL并非面向对象的全部 通过面向对象编程语言(OOPL)认识到的面向对象,并不是面向对象的全部,甚至只是浅陋的面向对象。OOPL的三大机制“封装、继承、多态” 可以表达面向对象的所有概念,但这三大机制本身并没有刻画出面向对象的核心精神。换言之,既可以用这三大机制做出“好的面向对象设计”,也可以用这三大机制 做出“差的面向对象设计”。不是使用了面向对象的语言(例如C#),就实现了面向对象的设计原创 2007-08-07 21:09:00 · 1517 阅读 · 1 评论 -
面向对象设计原则(C#版二)
三、 里氏代换原则(LSP)Liskov Substitution Principle(里氏代换原则):子类型(subtype)必须能够替换它们的基类型。白马、黑马 反过来的代换不成立《墨子·小取》说:"娣,美人也,爱娣,非爱美人也……"娣便是妹妹,哥哥喜爱妹妹,是因为两人是兄妹关系,而不是因为妹妹是个美人。因此,喜爱妹妹不等同于喜爱美人。用面向对象语言描述,美人是基类,妹妹是美人的子原创 2007-08-07 21:25:00 · 1413 阅读 · 1 评论 -
接口和委托的区别
接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。接口(interface)是向客户承诺类或结构体的行为方式的一种合同,当实现某个接口时,相当于告诉可能的客户:“我保证支持这个接口的方法,属性等”,接口不能实例化,接口只包含成员定义,不包含成员的实现,成员的实现需要在继承的类或者结构中实现。 C#中的委托是一种引用方法的类型,一旦为委托分配了方法,委托将原创 2007-08-12 20:15:00 · 10976 阅读 · 3 评论 -
范型集合(二)
表示对象的先进先出集合。 public static void QueueTest() ...{ Queuestring> numbers = new Queuestring>(); numbers.Enqueue("one"); numbers.Enqueue("two"); numbe原创 2007-08-09 21:41:00 · 857 阅读 · 0 评论 -
范型集合(一)
表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。public static void ListTest() ...{ Liststring> dinosaurs = new Liststring>(); Console.WriteLine(" Capacity: {0}", dinosaurs.原创 2007-08-09 21:37:00 · 1142 阅读 · 1 评论 -
C#: 通过动态编译获取字符串所表达的值
到许多人经常问到这个问题: 怎么由字符串 “126 + (256 - 2^4 )”,或者怎么判断 “115 > 56 || 14/**//******************************************************************* 文件名: Eval.cs** Copyright (c) 1999 -2003 ** 创建人: Phoenix** 创转载 2008-03-29 01:51:00 · 1185 阅读 · 0 评论