设为首页
加入收藏
联系我们
首页 基础教程 技术文档 实例分析 数 据 库 疑难杂症 ASP.NET 七夕许愿树 技术论坛
同学网,基于同学关系的真实社区
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
最新文章
 C#摄像头编程实例
 C#下用P2P技术实现点…
 Asp.net(c#)数…
 SQL Server数据…
 .NET牛人应该知道些什…
 NET牛人应该知道些什么
 SQL Server S…
 备份指定表到另一数据库
 SQLSERVER中快速…
 ASP.NET中url传…
 ASP.NET自动给UR…
 ASP.NET 2.0防…
 ASP.NET 2.0 …
 如何解决ASP.net中…
 sql server 与…
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
推荐文章
 关于C#中的REF和黓认…
 读书笔记c#高级编程 委…
 【算法】C#快速排序类
 Visual C#的SQ…
 C#中调用API
 Infragistics…
 C#接口转换
 C#读取设备信息
 用.net操作word
 C# MessageBo…
 Visual C#中的数…
 雅虎公司C#笔试题,看看…
 C#.NET使用NHib…
 .net学习之运算符重载…
 Visual C# 3.…
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
热门文章
 ADO.Net与ADO在…
 开发ASP.NET下的M…
 用C#+XMI技术进行U…
 什么是虚拟机?
 C#基础全接触
 C#学习第一天
 雅虎公司C#笔试题,看看…
 C#语言初级入门(1)
 C#中利用正则表达式实现…
 远程重启计算机(C#)
 用.net操作word
 什么是B/S三层?
 VB和C# 语法对比图 …
 Visual C#常用函…
 Visual C#的SQ…
C#语言基础常见问题汇总(1)
阅读正文 文字大小:增大 减小  文字行距:增大 减小   双击自动滚屏
本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

概述

1. 什么是C#?   

C#是Microsoft公司设计的一种编程语言。它松散地基于C/C++,并且有很多方面和Java类似。

Microsoft是这样描述C#的:“C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言。C#(读做‘Csharp’)主要是从C/C++编程语言家族移植过来的,C和C++的程序员会马上熟悉它。C#试图结合Visual Basic的快速开发能力和C++的强大灵活的能力。” 



2. 如何开发C#应用程序?    

.NET SDK包括了C#命令行编译器(csc.exe),下一个版本的Visual Studio (Visual Studio 7 or Visual Studio.NET)会包含对C#开发的完整支持。 



3. C#可以取代Java?   

C#非常像Java语言——这两种语言的核心和C++相比都有相似的优缺点。例如,两个语言都有垃圾回收,但是两个语言都没有模板(template)。Microsoft已经中止了Visual J++产品,因此很难不认为Microsoft在使用C#来替代Java。 

   

4. C#可以取代 C++?
   

显然是不,但是我们又很难说C++是新的.NET平台上编写代码的最佳选择。为了使.NET的运行层能完全发挥作用,它要求编程语言遵循某些特定的规则——其中之一就是所有的语言类型必须遵守通用类型系统(Common Type System,CTS)。不幸的是,许多C++特性不能被CTS支持。例如,模板和类的多重继承。 



Microsoft对这个问题的答案是给C++提供可管理的扩展(Managed Extensions,ME), 这可以使C++遵守CTS。通过添加新的关键字来标记C++类有CTS的属性(例如.-gc表示垃圾回收)。但是在创建新的工程时很难讲为什么ME C++会比C#更合适。就特征(feature)而言它们很相似,但与C++不同的是C#从一开始就以.NET为环境设计的。ME C++存在的理由好像是将C++代码移植(port)为.NET环境下的代码。 



因此,这个问题的答案,很可能是C++作为一个.NET环境之外的语言将依然保留它的重要性;而通过ME将现存的C++代码移植为适合.NET环境;但是很可能C#将是C++开发者开发新的.NET应用程序的最好选择。 



8. C#是面向对象的吗?   

是的,C#像Java和C++一样,是一个面向对象的语言。 



9. C#有自己的类库吗?   

不,就像所有的.NET语言(VB.Net,JScript .Net...)一样,C#访问.NET类库,C#没有自己的类库。 



基本类型 



1. C#提供什么标准类型?    

C# 支持的基本类型和C++很相似,包括int, long, float, double, char, string, arrays, structs 和 classes。然而,不要假设太多,名字可能很形似,但是一些细节不相同。例如C#中的long是64位的,而C++的long取决于平台,32位的平台上是32位的,64位的平台上是64位的。class和struct在C++中几乎完全一样,但在C#中并不是这样的。 

  

2. 是否所有的C#类型都派生于一个公共的基类?
   

是,也不是,所有的对象都可以看作从Object (System.Object)派生而来。但是为了把像int,float这样的值类型实例看作是从Object对象派生的,这个实例必须通过一个装箱的操作(boxing)转化为引用类型。理论上,开发者可以忽略这些底层的转化,但是认识到这点对于系统性能影响很重要。 

  

3. 是否可以这样认为,可以将一个值类型的实例作为参数传给以对象为参数的方法?
   

是的,例如:



class CApplication {



public static void Main() {



int x = 25;



string s = “fred”;



DisplayMe( x );



DisplayMe( s ); }



static void DisplayMe( object o ) {



System.Console.WriteLine( “You are {0}”, o ); }}



将显示:



You are 25



You are fred 

  

4. 值类型和引用类型的最基本的区别是什么?
   

C#将类型分为两类,一类是值类型,另一类是引用类型。大部分固有的基本类型(如int, char)是值类型,structs 也是值类型。引用类型包括类、接口、数组和字符串。基本的概念非常简单,那就是一个值类型的实例代表了实际的数据(存在栈中),而一个引用类型的实例代表指向数据的指针或者引用(存在堆中)。 



C++开发者最容易混淆的地方是:C#已经自己预定义了一些类型作为值类型,一些作为引用类型,而一个C++的开发者希望能够自己控制。

例如,在C++中,我们可以这样做:



int x1 = 3; // x1 是堆栈上的值



int *x2 = new int(3) // x2 是堆的一个值的引用



但是在C#中没有这样的控制:



int x1 = 3; // x1是堆栈上的值



int x2 = new int();



x2 = 3; // x2还是堆栈上的值!



本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

中国C#技术交流QQ群:6337034  10976424  9383681  35248582  35248645
版权所有:中国C#技术学习中心 Copyright ? 2006-2008
建议浏览分辨率使用:1024*768分辨率
粤ICP备05002251号