当前位置:首页 » 编程软件 » csharp编译器

csharp编译器

发布时间: 2023-07-09 08:30:48

❶ 如何在Visual Studio中选择C++和C#的编译器版本

Visu后来进行C++、C#、web开发,改为开发环境。

❷ 请推荐一款虚拟机软件

推荐给这位朋友CSM脚本语言编译器和虚拟机执行器
CSM脚本语言是国人自主研发的,拥有自主知识产权(软件着作权证书号为2006SR16059)的,是世界上第一款也是迄今为止(2006年10月)唯一的一款嵌入型的,高性能的,工业强度级的,基于对象的,完全强类型的,基于寄存器虚拟机实现的静态编译型脚本语言.它是主流编译型宿主语言(C/C++/ C#/Java)在脚本领域的自然延伸.也代表着这一领域的顶尖设计水平.CSM是C Sharp Minus的简称,其语法形式大部分取自于微软的c#语言,但也有许多不同.而语义上基本与C/C++相同.CSM脚本语言有许多独特的特性使其成为最优秀的静态脚本语言之一.具体的介绍如下:
CSM 脚本语言提供与主流编译型宿主语言(C/C++/C#/Java)相同或相似的语法形式和思维习惯.
CSM 脚本最终生成字节码,以二进制的方式嵌入到宿主环境中,这防止了脚本文本本身的直接暴露,保护了编写者的利益.而且编译器和脚本源程序无须随应用宿主程序一同分发.
CSM 编译器提供精确到某行某列的,详尽的,完全中文化的编译出错信息显示.
CSM 编译器内部大量使用了虚拟内存,内存映射文件和嵌入式汇编技术,使编译速度更加快速.
支持预编译处理中的条件编译功能.(由#def / #undef / #if / #ifdef /#endif等预处理指令提供的一组预处理功能).这使脚本程序像VC++那样可以提供debug和release版本.
天生就是Unicode,所以支持中文的类名,变量名,常量名,函数名,属性(property)名.
支持sbyte,byte,short,ushort,int,uint,long,ulong整型类型,以及float,double浮点类型,和bool,char等强类型数据.
从形式语法上彻底取消了指针的使用(但是语义上还是保留的),但又不失指针操作的灵活性,CSM脚本语言在这方面作出了不小的努力.
支持类和对象的概念,并同时支持全局常量,枚举成员,常量成员,静态成员,实例成员。以及静态构造方法,静态析构方法,实例构造方法,实例析构方法,普通静态成员方法,普通实例成员方法,静态和实例属性,以及==和!=操作符重载方法. 可在方法中定义out类型的参数.并支持方法重载(method overload)功能.
支持类中成员的1,2,4,8,16字节对齐属性,这为与C/C++宿主语言进行通讯,提供了相同的内存布局结构,能够以更加直接而快速的方式操控数据.
像Java或C#那样,支持静态和实例成员的初始化表达式.
支持各种算术,逻辑,布尔运算,复合运算及强制类型转换功能.
支持各种语句,包括声明语句,表达式语句,循环语句,跳转(goto)语句,以及switch语句,特别是switch语句,采用了和编译型宿主语言一样的技术.内部实现通过使用平衡树建立跳转表的方式,大大提高比较速度,使得在1000个分支的最坏情况下比较十次,加快了运行速度.
支持静态和实例方法的回调机制(这在c/c++中被称为函数指针,而C#中被称作代理delegate),能提供一定程度上的多态特性,并且通过这种方式可实现Event机制.
支持作用域和局部对象(或称栈对象)的概念,当局部对象退出其所在的作用域时,将自动调用其析构方法,且调用的次序正好与构造的次序相反,这是最典型的C++特征.
提供快速高效的算子功能.
提供局部堆和全局堆对象的分配功能.
对堆对象实行手工的new/delete分配和释放功能,做到与宿主语言C/C++一致.
有对系统调用的跟踪功能,一旦程序发生崩溃,能自动给出崩溃的语句点,以及此时的方法调用堆栈.这有点像我们在Windows系统中常见的崩溃对话框.
CSM脚本语言编译成字节码后由CSMachine虚拟机执行,CSMachine虚拟机上执行的汇编语言被称作是CSMasm汇编语言.而CSMachine虚拟机也是当今独一无二的强大的虚拟机实现之一:
CSMachine虚拟机是一种完全强类型的32位虚拟机,它支持约2500条虚拟机指令,每条虚拟机指令均以嵌入式汇编语言实现,以求达到最高的运行效率.
由于CSMasm具有庞大的指令集,所以对脚本的逆向工程能起到很强的遏制作用.使得反编译CSM字节码的工作很困难,这在很大程度上保护了脚本编写者的经济利益.
利用虚拟内存和内存映射技术对CSM执行映像进行分段,如数据段,代码段,堆栈段,局部堆,全局堆,对代码段实施只读保护,这起到了沙箱保护的功能.
CSMachine的堆栈尺寸可根据实际情况自动而灵活地扩大和收缩,无须象其它的脚本语言那样时刻去留意是否引发堆栈溢出.
是基于寄存器的实现方式,这种方式比嵌入型栈式虚拟机速度稍快.
是开放式虚拟机设计,只须通过Wrap/Unwrap操作对指针进行坐标系调整,不像封闭式虚拟机那样必须使用Marshal/Unmarshal进行数据块复制.
提供载入多个脚本以及一个脚本的多个副本的功能,为脚本程序的团队化开发和多线程应用提供了强而有力的技术保障.

希望这位朋友能喜欢
参考资料:http://www.27down.com/soft/10/169/2007/2007129961419.html

❸ 谁给简单介绍一下C#

特点有很多,简单易上手是比较明显的
编程方式。。。你指什么?
主要应用:网络,WEB开发
简单,但是依然有它需要长时间研究的地方
IDE:VS系列,2003,2005,2008等
可以游戏开发,理论上是都能做的

❹ C#属于什么语言

个人答案:面向对象语言x0dx0ax0dx0a官方文献:x0dx0aC#(C Sharp)是微软(Microsoft)为.NET Framework量身订做的程序语言,C#拥有C/C++的强大功能以及Visual Basic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言。x0dx0ax0dx0a简介x0dx0ax0dx0a C sharp(又被简称为“C#”)是微软公司在二零零年六月发布的一种新的编程语言,并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角.x0dx0a 在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了C#的出现.然后我将介绍C#和它与Java,c,c++的相似之处.其次我将讨论一些存在于Java和C#之间的高层次的,和基础的差别.我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.NET和C#的一个主要战略.目前,C#和.NET还只能以C#语言规则,以及Windows 2000的一个"d预览版本",还有MSDN上迅速增多的文档集子的形式获得(还没有最终定型).x0dx0a编辑本段x0dx0a定义x0dx0ax0dx0a 微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮Java.C#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:"这是对Java的反击."x0dx0a C#更象Java一些,虽然微软在这个问题上保持沉默.这也是意料中的事数配情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高.x0dx0a Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用Java).由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的Java电话).C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就象已经由SSI公司的CEO和主席Kalpathi S. Suresh指出来的那样,"我发现所有这些都是渐进的.如果C#不型亮存在,我们总能回到Java或C和C++.这些都不完全是新技术;它们在更大的意义上来说只是大公司制造的市场噱头.我们必须给他们时间安顿下来看看这些是不是卜毕宽真的对IT工业有什么影响."x0dx0a编辑本段x0dx0aC#从Java继承而来的特点x0dx0ax0dx0a 类:在C#中类的申明与Java很相似.这是合理的因为经验告诉我们Java模型工作得很好.Java的关键字import已经被替换成using,它起到了同样的作用.一个类开始执行的起点是静态方法Main().下面的Hello World程序展示了基本的形式:x0dx0a using System;x0dx0a class Hello {x0dx0a static void Main() {x0dx0a Console.WriteLine("Hello, world");x0dx0a }x0dx0a }x0dx0a 在这个例子中,System这个名字指向一个包括了基本C#实用类集合的命名空间(namespace).这个命名空间包括了Console类,它在这个例子中被用来输出一个字符串.类可以是抽象的和不可继承的:一个被申明成abstract的类不能被实例化;它只能被用做一个基类.C#关键字lock就象Java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类.界面:就象在Java中一样,一个界面是一组方法集合的抽象定义.当一个类或结构体实现一个界面的时候,它必须实现这个界面中定义的所有方法.一个单一的类可以实现几个界面.也许以后会出现一些微妙的差别,但是这个特点看起来与Java相比没有变化.布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.从布尔类型到其他类型没有直接的转换过程.布尔常量true和false是C#中的关键字.错误处理:如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程.内存管理:由底层.NET框架进行自动内存垃圾回收.x0dx0a编辑本段x0dx0aC#从C和C++继承的特点x0dx0ax0dx0a 编译:程序直接编译成标准的二进制可执行形式.如果前面的Hello World程序被保存成一个文本文件并被命名为Hello.cs,它将被编译成命名Hello.exe的可执行程序.x0dx0a 结构体:一个C#的结构体与C++的结构体是相似的,因为它能够包含数据申明和方法.但是,不象C++,C#结构体与类是不同的而且不支持继承.但是,与Java相同的是,一个结构体可以实现界面.x0dx0a 预编译:C#中存在预编译指令支持条件编译,警告,错误报告和编译行控制.可用的预编译指令有:x0dx0a #definex0dx0a #undefx0dx0a #ifx0dx0a #elifx0dx0a #elsex0dx0a #endifx0dx0a #warningx0dx0a #errorx0dx0a #line []x0dx0a 没有了#include 伪指令.你无法再用#define 语句对符号赋值,所以就不存在源代码替换的概念--这些符号只能用在#if和#elif伪指令里.在#line伪指令里的数字(和可选的名字)能够修改行号还有#warning和#error输出结果的文件名.x0dx0a编辑本段x0dx0a操作符重载:x0dx0ax0dx0a 一些操作符能够被重载,而另一些则不能.特别的是,没有一个赋值运算符能够被重载.能够被被重载的单目操作符是:x0dx0a + - ! ~ ++ -- true falsex0dx0a 能够被重载的二元运算符是:x0dx0a + - * / % & | ^ << >> == != > < >= <=x0dx0a编辑本段x0dx0aC#独有的特点x0dx0ax0dx0a C#最引人入胜的地方是它和Java的不同,而不是相似的地方.这一节(和这个系列第二部分的大部分地方)讲述了C#实现的和Java不同的地方或者Java根本没有的特点.x0dx0a中间代码:x0dx0a 微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用C#,Visual Basic,"Managed C++"--C++的一个符合CLS的版本--等语言编写的程序)将在性能上超过"解释性的"Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同.象"C#是编译语言而Java是解释性的,"之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码.x0dx0a命名空间中的申明:x0dx0a 当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.x0dx0a基本的数据类型x0dx0a :C#拥有比C,C++或者Java更广泛的数据类型.这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.象Java一样,所有这些类型都有一个固定的大小.又象C和C++一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字符变量包含的是一个16位的Unicode字符.C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字.x0dx0a两个基本类:x0dx0a 一个名叫object的类是所有其他类的基类.而一个名叫string的类也象object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.x0dx0a参数传递:x0dx0a 方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.x0dx0a与COM的集成:x0dx0a C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端.C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用用任何.NET语言子类化.x0dx0a索引下标:x0dx0a 一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样)以外是相似的.x0dx0a public class ListBox: Control {x0dx0a private string[] items;x0dx0a public string this[int index] {x0dx0a get {x0dx0a return items[index];x0dx0a }x0dx0a set {x0dx0a items[index] = value;x0dx0a Repaint();x0dx0a }x0dx0a }x0dx0a }x0dx0a 可以用一个循环器来匿名引用字符串内部数组成员,就象下面这样:x0dx0a ListBox listBox = ...;x0dx0a listBox[0] = "hello";x0dx0a Console.WriteLine(listBox[0]);x0dx0a代理和反馈:x0dx0a 一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明中.

热点内容
安卓平板生产力如何 发布:2025-02-07 13:07:20 浏览:349
维沃新系统和安卓系统有什么区别 发布:2025-02-07 13:06:36 浏览:831
压缩机过热保护器在哪 发布:2025-02-07 13:03:21 浏览:42
安装win8需要什么配置 发布:2025-02-07 13:00:34 浏览:676
大板算法 发布:2025-02-07 12:56:47 浏览:254
tplink路由器如何配置 发布:2025-02-07 12:50:48 浏览:428
unicode转中文python 发布:2025-02-07 12:45:21 浏览:287
学习python用什么软件 发布:2025-02-07 12:45:15 浏览:611
怎么看bin文件编译日期 发布:2025-02-07 12:44:27 浏览:391
怎么启动ftp服务 发布:2025-02-07 12:27:46 浏览:865