美丽涵涵童装店--说我博客名字,给你们打折!
随笔 - 82  文章 - 266  trackbacks - 0
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678


点击这里给杨爱友发消息
美丽涵涵童装店
说我博客名字,给你们打折!

常用链接

留言簿(6)

随笔分类

随笔档案

文章档案

好友的BLOG

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
[原文出处忘记了,复制了些对我有帮助的句子记下来,供以后查看]



1.1
什么是.NET Framework

1.1.2 如何用.NET Framework编写应用程序

    使用.NET Framework编写应用程序,就是使用.NET代码库编写代码(使用支持Framework的任何一种语言)VS是一种强大的集成开发环境,支持C#(以及托管和非托管C++Visual Basic和其他一些语言)。这个环境的优点是便于把.NET功能集成到代码中。为了执行C#代码,必须把它们转换为目标操作系统能够理解的语言,即本机代码,这种转换称为编译代码,由编译器执行。但在.NET Framework下,这个过程分为两个阶段。

1. MSILJIT

    在编译使用.NET Framework库的代码时,不是立即创建操作系统特定的本机代码,而是把代码编译为Microsoft中间语言(Microsoft Intermediate LanguageMSIL)代码,这些代码不专用于任何一种操作系统,也不专用于C#。其他.NET语言,如Visual Basic .NET也可以在第一阶段编译为这种语言,当使用VS开发C#应用程序时,编译过程就由VS完成。

显然,要执行应用程序,必须完成更多的工作,这是Just-In-Time (JIT)编译器的任务,它把MSIL编译为专用于OS和目标机器结构的本机代码。这样OS才能执行应用程序。这里编译器的名称Just-In-Time反映了MSIL仅在需要时才编译的事实。顾名思义,JIT编译器使用MSIL代码,而MSIL代码是独立于机器、操作系统和CPU的。目前有几种JIT编译器,每种编译器都用于不同的结构,我们总能找到一个合适的编译器创建所需的本机代码。

2. 程序集

    在编译应用程序时,所创建的MSIL代码存储在一个程序集中,程序集包括可执行的应用程序文件(这些文件可以直接在Windows上运行,不需要其他程序,其扩展名是.exe)和其他应用程序使用的库(其扩展名是.dll)

除了包含MSIL外,程序集还包含元信息(即程序集中包含的数据的信息,也称为元数据)和可选的资源(MSIL使用的其他数据,例如声音文件和图片)

3. 托管代码

    在把代码编译为MSIL,再用JIT编译器把它编译为本机代码后,CLR的任务还没有全部完成。用.NET Framework编写的代码在执行(这个阶段通常称为运行时(runtime))时是托管的。即CLR管理着应用程序,其方式是管理内存、处理安全性,以及允许进行跨语言调试等。

4. 垃圾回收

托管代码最重要的一个功能是垃圾回收(garbage collection)

在继续学习之前,先总结一下上述创建.NET应用程序所需要的步骤:

(1) 使用某种.NET兼容语言(C#)编写应用程序代码,如图1-1所示。

(2) 把代码编译为MSIL,存储在程序集中,如图1-2所示。

 

 

(3) 在执行代码时(如果这是一个可执行文件,就自动运行,或者在其他代码使用它时运行),首先必须使用JIT编译器将代码编译为本机代码,如图1-3所示。

 

(4) 在托管的CLR环境下运行本机代码,以及其他应用程序或过程,如图1-4所示。

 

6. 链接

编译为MSILC#代码不一定包含在单独的文件中,可以把应用程序代码放在多个源代码文件中,再把它们编译到一个程序集中,这个过程称为链接。

1.2 什么是C#  

C#是可用于创建要运行在.NET CLR上的应用程序的语言之一,它从CC++语言演化而来,是Microsoft专门为使用.NET平台而创建的。C#的优点是,它是惟一为.NET Framework设计的语言,是在移植到其他操作系统上的.NET版本中使用的主要语言。

1.2.1 C#能编写什么样的应用程序

● Windows应用程序 这些应用程序如Microsoft Office,使用.NET FrameworkWindows Forms模块就可以生成这种应用程序。Windows Form模块是一个控件库,其中的控件(例如按钮、工具栏、菜单等)可以用于建立Windows用户界面(UI)

● Web应用程序 这些是Web页,可以通过任何Web浏览器查看。.NET Framework包括一个动态生成Web内容的强大系统,允许个性化、实现安全性等。这个系统叫作Active Server Pages.NET (ASP.NET),我们可以使用C#通过Web Forms 创建ASP.NET应用程序。

● Web服务 这是创建各种分布式应用程序的新方式,使用Web服务可以通过Internet虚拟交换数据。无论使用什么语言创建Web服务,也无论Web服务驻留在什么系统上,都使用一样简单的语法。

这些类型也需要某种形式的数据库访问,这可以通过.NET FrameworkActive Data Objects.NET(ADO.NET)部分来实现。也可以使用许多其他资源,例如创建联网组件、输出图形、执行复杂数学任务的工具。
 1.2.2 C#与java中的不同之处 


1. 调用子类方法与JAVA有变,如下程序片段,其中B是A的子类,speak()方法在B中得到了重写:
  B b = new B();
  A a = b;
  b.speak();
  a.speak();
在JAVA中调用的都是b对象的speak()方法,因为a实际上也是指向b对象;而在c#中则不同,如果speak()是普通方法,则a.speak()调用的是a中的方法;若speak是虚方法,则调用的是b中的speak()方法。

2. visual studio 2005中“调试”→开始执行(Ctrl+F5)为灰色,不能用的解决办法:
在右侧的“解决方案”点右键→新建项目→已有项目,选择你本地的项目如ConsoleApplication1.sln,再选择你要运行的类,“开始执行”项就好使了。


3. c#方法重载:
1. 对普通方法的重载:
 类中两个以上的方法,取相同的名字,只要使用的参数类型或者参数个数不同,就实现了对方法的重载。这种重载方式与JAVA是相同的。
4. 对虚方法重载:
 在派生类中重新定义此虚方法时,要求方法名称、返回值类型、参数表的个数、类型、顺序都必须一致,并且要求在声明中加上override关键字,而且不能有new,static或virtual等修饰符。

5. 方法密封:
功能类似于JAVA语言的final,但语法不同。必须是对虚方法重写时才可以密封,所以sealed总是和override一起出现。下面这个方法将会出现错误

1 class C
2 {
3     sealed public void speak()
4     {
5         Console.WriteLine("I am c");
6     }
7 
8 }
9 

 

6. 属性与域:
c#中的域与JAVA的域概念相同;c#中的每个属性不能直接用对象来访问,必须通过它的set和get方法,它的set和get方法是定义在对象的属性里面的,属性的定义与访问与JAVA有很大的不同,其格式如下:
 

 1 class SealedTest
 2     {
 3         static void Main()
 4         {
 5             C c = new C();
 6             c.xxx = "yangay";
 7             Console.WriteLine(c.xxx);
 8         }
 9     }
10 }
11 ---------------
12 class C
13 {
14     string userName;
15     public string xxx//为了说明这里的名称可以与userName名无关,起了XXX。
16     {
17         get
18         {
19             return userName;
20         }
21         set
22         {
23             if (userName != value)
24             {
25                 userName = value;
26             }
27         }
28 
29     }
30 }
31 
32 
posted on 2007-08-30 17:16 杨爱友 阅读(299) 评论(0)  编辑  收藏 所属分类: java相关技术

只有注册用户登录后才能发表评论。


网站导航:
 
美丽涵涵童装店
亲,说我博客名字,给你们打折!