C# is a language designed from the ground specifically for .NET and includes the better features of other lanugages, you can develop any .NET applications with .NET
说C#完美还不是时候。 例如下面的情况就无法编译过去。public class Test1 { public virtual void Do(){} } public class Test2:Test1 { new public virtual void Do(){} void Test1.Do(){} }而对于interface是行的。。对于上面的例子,Test1本来是没有Do的。只有Test2有。 后来Test1的颁发者颁发了新的版本。 没有办法了,只有给Test2.Do添加关键字new 但是后来Test2发现,Test1.Do必须overide, 但C#没有提供可行的解决方案。 (可能MSIL本来就做不到上面那个。。~~~)
Microsoft C#(读作 C sharp)是一种新的编程语言,它是为生成运行在 .NET 框架上的、广泛的企业级应用程序而设计的。C# 从 Microsoft C 和 Microsoft C++ 演变而来,它是一种简单、现代、类型安全和面向对象的语言。C# 代码被作为托管代码编译,这意味着它能够从公共语言运行库的服务中受益。这些服务包括:语言互操作性、垃圾回收、增强的安全性以及改进的版本支持。 C# 在 Visual Studio .NET 套件中作为 Visual C# 引入。对 Visual C# 的支持包括项目模板、设计器、属性页、代码向导、一个对象模型以及开发环境的其他功能。Visual C# 编程的库是 .NET 框架。C# 语言是一种简单但功能强大的编程语言,用于编写企业应用程序。 C# 语言从 C 和 C++ 语言演化而来。它在语句、表达式和运算符方面使用了许多 C++ 功能。C# 语言在类型安全性、版本转换、事件和垃圾回收等方面进行了相当大的改进和创新。C# 语言提供对常用 API 样式(如 .NET 框架、COM、自动化和 C 样式 API 等)的访问。它还支持 unsafe 模式,在此模式下可以使用指针操作不受垃圾回收器控制的内存。C# 是一种精确、简单、类型安全、面向对象的语言,它使企业程序员得以构建广泛的应用程序。C# 还凭借以下功能,为您提供生成持久系统级组件的能力: 对集成现有代码提供完全 COM/平台支持。 通过提供垃圾回收和类型安全实现可靠性。 通过提供内部代码信任机制保证安全性。 完全支持可扩展元数据概念。 C# 还可以凭借以下功能,与其他语言交互操作、跨平台互用并与遗留的数据交互操作: 通过 COM+ 1.0 和 .NET 框架服务提供具有紧密库访问的完全相互作用支持。 对基于 Web 的组件交互提供 XML 支持。 版本转换功能使管理和部署变得简易。
下表包含 C++ 和 C# 功能之间的重要比较。如果您是一位 C++ 程序员,此表将为您提供这两种语言的最重要差异。有关详细信息,请使用链接浏览详细的主题。 注意 C++ 和 C# 派生于不同的项目模型。有关 C++ 和 C# 项目之间差异的信息,请参阅项目中的项管理和使用解决方案资源管理器。 功能 参考主题 继承:类只能继承一个基类中的实现。另外,类或接口可以实现多个接口。 class interface
数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。 数组 bool 类型:bool 类型和其他类型(特别是 int)之间没有转换。 bool long 类型:在 C# 中,long 数据类型为 64 位,而在 C++ 中为 32 位。 long struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。 struct class
switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。 switch delegate 类型:委托与 C++ 中的函数指针基本相似,但前者具有类型安全,是安全的。 delegate 从派生类调用重写基类成员。 base 请参阅 override 的示例
使用 new 修饰符显式隐藏继承成员。 New 声明重写方法需要有 override 关键字。 override 预处理器指令用于条件编译。C# 中不使用头文件。 C# 预处理器指令 异常处理:使用 finally 语句。 try-finally try-catch-finally
关键字 extern 的使用。 extern 关键字 static 的使用。 Static 在构造基类上替代 C++ 初始化列表的方法。 请参阅 virtual 的示例 C# 程序的常规结构:命名空间、类、结构、委托和枚举。 C# 程序的常规结构 Main 方法和 C++ 中的 main 函数的声明方式不同。另外,比较每种语言的命令行参数的使用。 Main 方法参数:C# 支持 ref 和 out 参数,这两个参数取代指针通过引用传递参数。 ref out
在 C# 中只在不安全模式下才使用指针。 unsafe 在 C# 中以不同的方式执行重载运算符。 C# 运算符 字符串:C# 字符串不同于 C++ 字符串。 string foreach 关键字使您得以循环访问数组和集合。 foreach, in C# 中没有全局方法和全局变量:方法和变量必须包含在类型声明(如 class 或 struct)中。 C# 程序的常规结构 C# 中没有头文件和 #include 指令:using 指令用于引用其他未完全限定类型名的命名空间中的类型。 using C# 中的局部变量在初始化前不能使用。 5. 变量 析构函数:在 C# 中,不能控制析构函数的调用时间,原因是析构函数由垃圾回收器自动调用。 析构函数 构造函数:与 C++ 不同,如果在 C# 中没有提供类构造函数,则为您自动生成默认构造函数。该默认构造函数将所有字段初始化为它们的默认值。 实例构造函数 默认值表
优势与一身,并创造了更多的特性。.net上最完美的语
都可以,如果开发WIN 运行程序的机器上要装.NET
现在都在开发WEB比较多.
借鉴了其他语言的长处,避免了其他语言中的复杂性。
C# 是由Microsoft开发的一种新型编程语言,由于它是从C和C++ 中派生出来的,因此具有C++的功能。同时,由于是Microsoft公司的产品,它又同 VB一样简单。对于web开发而言,C#象 Java,同时具有Delphi的一些优点。Microsoft宣称:C#是开发.NET框架应用程序的最好语言。
C# 是.NET的关键性语言,它是整个.NET平台的基础。与C#相比,.NET所支持的其它语言显然是配角身份。比如,VB.NET的存在主要是对千万个VB开发人员的负责。对于JScript.NET和 Managed C++ 也同样可以这么说,后者只是增加了调用.NET类的C++ 语言。C#是唯一没有在设计思路中加入了前辈语言某种遗传的新事物。
.NET平台将 C#作为其固有语言,重温了许多Java的技术规则。C#中也有一个虚拟机,叫做公用语言运行环境(CLR),它的对象也具有同样的层次。但是 C#的设计意图是要使用全部的Win32 API甚至更多。由于C#与 Windows的体系结构相似,因此 C# 很容易被开发人员所熟悉。
Java的目的是要拯救分布式计算世界,C# 则不同。C#本质上是C++的进化产物,使用了包括声明、表达式及操作符在内的许多C++特征,但是 C#还有更多的增强功能,比如类型安全(type-Safe)、事件处理、碎片帐集、代码安全性等。在C#中,除了可以使用许多API,更能使用.NET类。特别地是,我们可以处理COM的自动化和C类型的函数。
例如下面的情况就无法编译过去。public class Test1
{
public virtual void Do(){}
}
public class Test2:Test1
{
new public virtual void Do(){}
void Test1.Do(){}
}而对于interface是行的。。对于上面的例子,Test1本来是没有Do的。只有Test2有。
后来Test1的颁发者颁发了新的版本。
没有办法了,只有给Test2.Do添加关键字new
但是后来Test2发现,Test1.Do必须overide,
但C#没有提供可行的解决方案。
(可能MSIL本来就做不到上面那个。。~~~)
通过提供垃圾回收和类型安全实现可靠性。
通过提供内部代码信任机制保证安全性。
完全支持可扩展元数据概念。
C# 还可以凭借以下功能,与其他语言交互操作、跨平台互用并与遗留的数据交互操作: 通过 COM+ 1.0 和 .NET 框架服务提供具有紧密库访问的完全相互作用支持。
对基于 Web 的组件交互提供 XML 支持。
版本转换功能使管理和部署变得简易。
功能 参考主题
继承:类只能继承一个基类中的实现。另外,类或接口可以实现多个接口。 class
interface
数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。 数组
bool 类型:bool 类型和其他类型(特别是 int)之间没有转换。 bool
long 类型:在 C# 中,long 数据类型为 64 位,而在 C++ 中为 32 位。 long
struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。 struct
class
switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。 switch
delegate 类型:委托与 C++ 中的函数指针基本相似,但前者具有类型安全,是安全的。 delegate
从派生类调用重写基类成员。 base
请参阅 override 的示例
使用 new 修饰符显式隐藏继承成员。 New
声明重写方法需要有 override 关键字。 override
预处理器指令用于条件编译。C# 中不使用头文件。 C# 预处理器指令
异常处理:使用 finally 语句。 try-finally
try-catch-finally
C# 运算符:C# 支持其他运算符,如 is 和 typeof。它还引入了某些逻辑运算符的不同功能。 & 运算符
| 运算符^ 运算符isTypeOf
关键字 extern 的使用。 extern
关键字 static 的使用。 Static
在构造基类上替代 C++ 初始化列表的方法。 请参阅 virtual 的示例
C# 程序的常规结构:命名空间、类、结构、委托和枚举。 C# 程序的常规结构
Main 方法和 C++ 中的 main 函数的声明方式不同。另外,比较每种语言的命令行参数的使用。 Main
方法参数:C# 支持 ref 和 out 参数,这两个参数取代指针通过引用传递参数。 ref
out
在 C# 中只在不安全模式下才使用指针。 unsafe
在 C# 中以不同的方式执行重载运算符。 C# 运算符
字符串:C# 字符串不同于 C++ 字符串。 string
foreach 关键字使您得以循环访问数组和集合。 foreach, in
C# 中没有全局方法和全局变量:方法和变量必须包含在类型声明(如 class 或 struct)中。 C# 程序的常规结构
C# 中没有头文件和 #include 指令:using 指令用于引用其他未完全限定类型名的命名空间中的类型。 using
C# 中的局部变量在初始化前不能使用。 5. 变量
析构函数:在 C# 中,不能控制析构函数的调用时间,原因是析构函数由垃圾回收器自动调用。 析构函数
构造函数:与 C++ 不同,如果在 C# 中没有提供类构造函数,则为您自动生成默认构造函数。该默认构造函数将所有字段初始化为它们的默认值。 实例构造函数
默认值表
C# 不支持位域。 C++ 位域
C# 的输入/输出服务和格式设置依赖于 .NET 框架的运行时库。 C# 语言教程
格式化数值结果表
在 C# 中,方法参数不能有默认值。如果要获得同样的效果,请使用方法重载。 编译器错误 CS0241
包括创建com+,服务以及对xml强大支持
既然C#有这么完美,那其它语言开发公司还能生存下去吗?
既然C#这么简单易用,那新手还用得着学别的语言吗?
这样下去,世上的开发语言将只剩C#一种了?
你想用NET就学C#,虽然没有一种语言是完美的!
不过最好还是学思想!
比较好学!容易上手!
又有人说它是Java的Microsoft版………
呵呆~~~