博文

一个彻底解释 C#泛型的源代码(2008-08-13 01:19:00)

摘要:using System;
using System.Collections.Generic;
using System.Text; namespace Iinterface
{
    //声明T类型.
    public class GenericList<T> : System.Collections.Generic.IEnumerable<T>
    {
        protected Node head;
        protected Node current = null;         // 定义一个Node类,该类也是泛型类型
        protected class Node
        {
            public Node next;
            //T类型的成员
            private T data;             //构造函数不是泛型类型,参数类型应用了T类型
           ......

阅读全文(2860) | 评论:0

编程的一点心得(2008-08-12 22:32:00)

摘要:我写程序至今已经有两年多了,这段时间里,我的收获很大,感触也颇多。实际上我 在三年前便正真的接触到了c++编程,只不过那时候还在学校,忙于功课,没有对c++ 进行进一步的研究,只是简单的停留在很是初级的阶段。现在看来,那个时候连 最起码的编译器设置都没有搞清楚,只是会写class类而已,当然是没有经过很好 设计的。应该不算是在编程,fan的成分很大。
工作后,公司时候的编程语言是c++,使用的编译器是vc6.0,这对于一个本来就 对c++编程感兴趣的人来说,实在是一件很好的事情。我这时候的c++学习虽然不 象在学校里可以很安心的拿着书看,但这里你可以实战。你需要有在工作中不停 学习的能力,资源是相当多的,在网上你可以找到几乎所有的资源,更何况还有 数据量n大的msdn,所有的这一切开始的时候可能让你眼花缭乱。我是一个很贪心 的人,对于好的东西,e.g.各种编程书籍的电子版,各种编程心得,etc. 很多很 多,我便“疯狂”的收集,虽然有点夸张,但毕竟到现在我觉得我还是收集了不 少很经典的书籍。现在看来,这样做有两大好处,一是在当时满足了我的收集欲 望,没有将一腔热情放在别处(相对于游戏或者别的什么的,收集还算很不错), 二是有了资料,我便可以查看,学习资料。比较糟糕的一点便是,我对于收集来 的资料,除了那些在工作中可以确实参考的东东以外,其他的就很少去看,扔在 那不管,觉得对不起自己,也对不起这些资料。
说了一堆废话,现在正儿八经的说写程序吧。我暂且在此称为做软件,那就是你 把别人的需求变成了最终别人想要的东西。这句话说的简单,可是要做到却是非 常难的,对一个公司是这样,对于个人来说就更难了。但我这里讲的做软件,绝 对不是有些人认为的写代码,写代码只是做软件过程中的一小部分。既然这里讲 到了过程,我就不得不说一下软件工程。我虽然工作时间和很多人比起来很短, 但我从一开始就认为,要想正真写好程序,最好先将软件工程好好研读一下。它 可以让你知道一些开发的基本规则,(在我的世界观里,世界上的万物存在,都有 各自的存在规则),也许它所介绍的不是最合适的规则,但你仍然是可以参照的, 至少在你还没有发现更好的规则之前。
有人说过一句话,“好的过程才能产生好的产品”,我觉得很合适做软件,软件 工程的作用刚好是......

阅读全文(1395) | 评论:1

VC++学习方法及书籍推荐(2008-08-12 17:28:00)

摘要: 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千,很多陌生的出版社,很多陌生的作者,很多陌生的译者,书名也是越来越夸张,什么××天精通××,精通××编程, ××宝典等等,书的印刷质量真的很好,纸张的质量也是今非昔比啊,但书的内容好象却是越来越让人失望,也许是我老了,我的思想我的观念已脱离现实社会,也许是外面的世界变化得太快,我编程数月,出去一走,路已不是原来的路……回家看着书架上的旧书发呆,听着李克勤的旧欢如梦,才发现自已原来太喜欢怀旧.

  笔者从事软件开发多年,其中有两年多的时间一直是与Windows底层打交道,涉及到驱动程序,嵌入式OS,Windows应用程序(如GUI,图形图像技术,多线程,组件技术等等)等方面的开发,写了很多很的源代码……也许我的阅读面过于狭小,书架里基本上都是Jeffrey Richter,Charles Petzold,侯捷老师以及潘爱民老师的书,这些书一直陪伴着我,并给我的编程工作带来了很大的帮助,希望我的推荐对你也有帮助。

  Windows编程类

  Windows 程序设计(第5版)(上、下册)
  原书名: Programming Windows (Fifth Edition)
  原出版社:Microsoft Press
  作者:(美)Charles Petzold
  译者:北京博彦科技发展有限责任公司
  出版社:北京大学出版社
  出版日期:2001-03
  页码:1376
  定价:160:00RMB

  此书被认为是Windows编程最好的导论性读本。在1994年5月,此书的作者Charles Petzold被《Window Magazine》和Microsoft公司授予”Windows Pioneer”奖,以表彰他对Microsoft Windows的成功作出的贡献,可见该书的权威性,以至于“如果对Windows开发有什么问题的话,请翻阅PetZold的著作吧”几乎成了一句至理名言。

  本书覆盖了WINDOWS编程的方方面面,将windows编程的每一个元素(如输入,输出及对话框,图形,多媒体,线程,文档与视图,Internet等等)讲解得很清晰、简明,......

阅读全文(1137) | 评论:0

第1章  C++的初步知识[2](2008-08-12 17:09:00)

摘要:  #include <iostream>是一个“包含命令”,它的作用是将文件iostream的内容包含到该命令所在的程序文件中,代替该命令行。文件iostream的作用是向程序提供输入或输出时所需要的一些信息。iostream是i-o-stream 3个词的组合,从它的形式就可以知道它代表“输入输出流”的意思,由于这类文件都放在程序单元的开头,所以称为“头文件”(head file)。在程序进行编译时,先对所有的预处理命令进行处理,将头文件的具体内容代替 #include命令行,然后再对该程序单元进行整体编译。   程序的第2行“using namespace std; ” 的意思是“使用命名空间std”。C++标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C++标准库(此时就需要用#include命令行),就需要用“using namespace std; ”作声明,表示要用到命名空间std中的内容。 在初学C++时,对本程序中的第1,2行可以不必深究,只需知道: 如果程序有输入或输出时,必须使用“#include <iostream>”命令以提供必要的信息,同时要用“using namespace std;” ,使程序能够使用这些信息,否则程序编译时将出错。  例1.2 求a和b两个数之和。 可以写出以下程序: // 求两数之和                    (本行是注释行) #include <iostream>              //预处理命令 using namespace std;             //使用命名空间std int main( )  ......

阅读全文(2634) | 评论:3

第1章  C++的初步知识[1](2008-08-12 17:05:00)

摘要:  *1.1 从C到C++     计算机诞生初期,人们要使用计算机必须用机器语言或汇编语言编写程序。世界上第一种计算机高级语言诞生于1954年,它是FORTRAN语言。先后出现了多种计算机高级语言。其中使用最广泛、影响最大的当推BASIC语言和C语言。 BASIC语言是1964年在FORTRAN语言的基础上简化而成的,它是为初学者设计的小型高级语言。 C语言是1972年由美国贝尔实验室的D.M.Ritchie研制成功的。它不是为初学者设计的,而是为计算机专业人员设计的。大多数系统软件和许多应用软件都是用C语言编写的。  但是随着软件规模的增大,用C语言编写程序渐渐显得有些吃力了。 C++是由AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。C++保留了C语言原有的所有优点,增加了面向对象的机制。 C++是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从C++的名字可以看出它是C的超集。C++既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。   C++对C的“增强”,表现在两个方面: (1) 在原来面向过程的机制基础上,对C语言的功能做了不少扩充。 (2) 增加了面向对象的机制。 面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率。 不要把面向对象和面向过程对立起来,面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。 学习C++,既要会利用C++进行面向过程的结构化程序设计,也要会利用C++进行面向对象的程序设计。本书既介绍C++在面向过程程序设计中的应用,也介绍C++在面向对象程序设计中的应用。   *1.2 最简单的C++程序   例1.1 输出一行字符: “This is a C++ program.”。 程序如下: #include <iostream>          &n......

阅读全文(1906) | 评论:1

打印三角形 --C#(2008-08-12 16:50:00)

摘要:using System; public class Hello
{
 public static void Main()
 {
  Console.Write("请输入行数:");
  int lines = int.Parse(Console.ReadLine());
  Console.WriteLine("");   for(int i=1; i<=lines ; i++)
  {
   for(int k=1; k<= lines-i; k++)
    Console.Write(" ");    for(int j=1; j<=i*2+1; j++)
    Console.Write("*");
   Console.WriteLine("");
  }
  Console.ReadLine();
 }
}
......

阅读全文(1263) | 评论:0

C#传值调用与引用调用 解释(2008-08-12 16:43:00)

摘要:using System; class MethodCall
{
 public static void Main()
 {
  /*
   * 参数类型分为 in, ref, out 三种,默认为 in。
   * in 类型在子方法中修改了对应变量后,主方法中的值不会发生改变。
   * ref 类型在子方法中修改了对应变量后,主方法中的值也会发生改变。
   * out 主方法中对应的变量不需要初始化。
   *
   */  
  int a = 3, b = 4, c;
  Console.WriteLine("Before Method Call : a = {0}, b = {1}, c 未赋值", a, b);
  AMethod(a, ref b, out c);
  Console.WriteLine("After  Method Call : a = {0}, b = {1}, c = {2}", a, b, c);
 }  public static void AMethod(int x, ref int y, out int z)
 {
  x = 7;
  y = 8;
  z = 9;
 }
}......

阅读全文(2759) | 评论:0

JavaScript精简学习4:表单(2008-08-12 02:02:00)

摘要:43 表单构成
1: <form method=”post” action=”target.html” name=”thisForm”>
2: <input type=”text” name=”myText”>
3: <select name=”mySelect”>
4: <option value=”1”>First Choice</option>
5: <option value=”2”>Second Choice</option>
6: </select>
7: <br>
8: <input type=”submit” value=”Submit Me”>
9: </form> 44 访问表单中的文本框内容
1: <form name=”myForm”>
2: <input type=”text” name=”myText”>
3: </form>
4: <a href='http://www.webjx.com/htmldata/2006-02-06/1139212451.html#' onClick='window.alert(document.myForm.myText.value);'>Check Text Field</a> 45 动态复制文本框内容
1: <form name=”myForm”>
2: Enter some Text: <input type=”text” name=”myText”><br>
3: Copy Text: <input type=”text” name=”copyText”>
4: </form>
5: <a href=http://www.webjx.com/htmldata/2006-02-06/”#” onClick=”document.myForm.copyText.value =
6: document.myForm.myText.val......

阅读全文(1760) | 评论:1

JavaScript精简学习3:图像(2008-08-12 02:00:00)

摘要:36 读取图像属性
1: <img src=http://www.webjx.com/htmldata/2006-02-06/”image1.jpg” name=”myImage”>
2: <a href=http://www.webjx.com/htmldata/2006-02-06/”# ” onClick=”window.alert(document.myImage.width)”>Width</a>
3:

37 动态加载图像
1: <script language=”JavaScript”>
2: myImage = new Image;
3: myImage.src = “Tellers1.jpg”;
4: </script>

38 简单的图像替换
1: <script language=”JavaScript”>
2: rollImage = new Image;
3: rollImage.src = “rollImage1.jpg”;
4: defaultImage = new Image;
5: defaultImage.src = “image1.jpg”;
6: </script>
7: <a href=http://www.webjx.com/htmldata/2006-02-06/”myUrl” onMouseOver=”document.myImage.src = rollImage.src;”
8: onMouseOut=”document.myImage.src = defaultImage.src;”>
9: <img src=http://www.webjx.com/htmldata/2006-02-06/”image1.jpg” name=”myImage” width=100 height=100 border=0>

39 随机显示图像
1: <script language=”JavaScript”>
2: var imageList = new Array;<......

阅读全文(1430) | 评论:0

JavaScript精简学习2:浏览器输出(2008-08-12 01:59:00)

摘要: 26 访问document对象
1: <script language=”JavaScript”>
2: var myURL = document.URL;
3: window.alert(myURL);
4: </script>
27 动态输出HTML
1: <script language=”JavaScript”>
2: document.write(“<p>Here’s some information about this document:</p>”);
3: document.write(“<ul>”);
4: document.write(“<li>Referring Document: “ + document.referrer + “</li>”);
5: document.write(“<li>Domain: “ + document.domain + “</li>”);
6: document.write(“<li>URL: “ + document.URL + “</li>”);
7: document.write(“</ul>”);
8: </script>
28 输出换行
1: document.writeln(“<strong>a</strong>”);
2: document.writeln(“b”);
29 输出日期
1: <script language=”JavaScript”>
2: var thisDate = new Date();
3: document.write(thisDate.toString());
4: </script>
30 指定日期的时区
1: <script language=”JavaScript”>
2: var myOffset = -2;
3: var currentDate = new Date()......

阅读全文(1404) | 评论:0