分类

链接

2011 年 12 月
 1234
567891011
12131415161718
19202122232425
262728293031  

近期文章

热门标签

新人福利,免费薅羊毛

代码的性能研究1

某哥们写了如下代码,被论坛上某“高手”一顿痛批,说此代码除了不符合编码规范外,性能也会非常低,原因是每次循环都会调用 ToCharArray() 。~~~~ string s = "abcdefg"; foreach (char c in s.ToCharArray()) Console.WriteLine(c); 在此我们不追究编码规范,只深究所谓性能降低的问题。可以肯定的说,那个高手也只是所谓的“高手”。呵呵!道理很简单,如果每次循环都调用ToCharArray()的话,那么每次都会生成一个新的char[],IEnumerator.Current 每次都会指向第一个字符(也就是'a'),IEnumerator.MoveNext() 永...

.NET 暂无评论 阅读(1,978)

一个有关 finally 的有趣问题

看看下面的代码,会返回几? static int Test() { int x = 1; try { return x; } finally { x = 2; } } 结果是 1,尽管 finally 内的代码会在方法结束前被调用,但是并没有改变输出结果,为什么会这样?看看编译器是怎么做的? 反编译代码 private static int Test() { int num2; int num1 = 1; try { num2 = num1; } finally { num1 = 2; } return num2; } 看来编译器还是动了一番心...

.NET 评论(1) 阅读(2,595)

LINQ to XML

LINQ to XML 提供了大量和 System.Xml 类似的操作手段用于修改 XML 文档。 var doc = new XDocument(); // Add doc.Add(new XElement("people")); // Add Child var people = doc.Root; people.Add(new XElement("person")); var person = doc.Element("people").Element("person"); person.Add( new XElement("id", 1), new XElement("name", "user1"), new XElement("age", 12)); // AddBeforeSelf & AddAfterSelf person.AddBeforeSelf(new XElement("person", new X...

.NET 暂无评论 阅读(2,421)

借助委托实现方法嵌套

C# 并不支持方法嵌套,也就是说我们不能写出下面这样的代码。 void Test() { void Inner(int x) { } Inner(123); } 但某些时候,方法嵌套却非常有用,比如说方法内的某些局部代码会被多个 "不连续" 区域调用。当然,我们可以将这些 "公用代码" 提取为类私有方法成员。但这么做有些 "别扭",或者说是 "不好看"。毕竟这些代码的使用者只有当前这个方法,将其作用域提升,有 "污染" 的嫌疑。借助于委托,我们很容易 "模拟" 出方法嵌套。 试验原型 static void Test() { var a = new[] ...

.NET 暂无评论 阅读(1,977)

搜索算法

1. Searching for Minimum and Maximum Values   //这个太简单,不多说,直接贴代码。 static int FindMin(int[] array) {     var min = array[0];     foreach (var i in array)     {         if (i < min) min = i;     }       return min; }   static int FindMax(int[] array) {     var max = array[0];     foreach (var i in array)     {         if (i > max) max = i;     }       return max; }   static void Main(string[] args) {     var array = new[] { 3, 7, 6, 5, 8, 4, 9, 2, 0, 1 ...

.NET 暂无评论 阅读(1,741)

快速排序

快速排序应该是目前最快,也是最常用的一种排序算法。它将一个集合划分成两个子集合,然后继续递归来完成最终排序。 具体做法: 1. 选取集合最右端的元素作为一个参照物,称之为 "枢纽" (pivot)。 2. 开始计算分割位置。在计算时,进行元素交换,确保左侧元素都小于枢纽,而右侧都大于枢纽。 3. 根据分割位置,分别递归左右两段子集合,直至最终完成排序。 过程演示: array = {2, 9, 5, 1, 8, 3, 6, 4, 7, 0}; 第一轮调用: 1. 首先获取最右侧元素 0 作为枢纽。 2. 由于没有比枢纽更小的元素,因此没有发生内部交...

.NET 暂无评论 阅读(2,181)

代码之美

1. using   如果你写过下面这样的代码,那么你可以省一点,起码不用过多的缩进。 using (SqlConnection conn = new SqlConnection()) { using (SqlConnection conn2 = new SqlConnection()) { } }   类型相同时,和我们一次声明多个同类型变量差不多。 using (SqlConnection conn = new SqlConnection(), conn2 = new SqlConnection()) { }   如果类型不同,那么就写成下面这样。 using (MemoryStream stream = new MemoryStream()) using (SqlConnection conn = new SqlConnection()) { }   2. ??   这类代码很...

.NET 暂无评论 阅读(1,918)

C#窗体淡入淡出

        //淡入         public int state = 0;         private void f2_Load(object sender, EventArgs e)         {             this.Opacity = 0;         }           private void timer1_Tick(object sender, EventArgs e)         {             if (state == 0)             {                 this.Opacity += 0.02;                 if (this.Opacity == 1)                 {                     state = 1;                     timer1.Enabled = false;                 }             }        ...

.NET 暂无评论 阅读(2,411)

asp.net 弹出提示并跳转

asp.net弹出提示与跳转方式 1,页面中显示: Response.Write(i.ToString ()+"<br>"); 2,对话框显示: Page.RegisterStartupScript("msg", "<script>alert('" + _info + "')<" + "/script>"); Response.Write("<script>alert('"+_info+"')<" + "/script>");   3.提示之后再跳转: Response.Write("<script>alert('注册成功');window.location='/employee/stulogsuccess.aspx';<" + "/script>"); 注:此方法不可用window.history.back()返回;   4.直接跳转:...

.NET 暂无评论 阅读(2,344)

C#连接EXCEL数据库

using System.Data.OleDb; //命名空间 private void button1_Click(object sender, EventArgs e) { string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=student.xls; Extended Properties=Excel 8.0;";   OleDbConnection conn = new OleDbConnection(strConn)   string sql = "select * from [student$]"; //注意EXCEL数据库表形式   OleDbCommand cmd = new OleDbCommand(sql, conn);   OleDbDataAdapter oda = new OleDbDataAdapter(cmd);   DataSet ds = new DataSet();   oda.Fill(ds,"stud...

.NET, Access 暂无评论 阅读(2,960)