{
BaseAddress = 1 /(((double)i + 1);
}

返回true;
}
外部“ C” AFX_API_EXPORT intGetArrayElementNumber()
{
返回StaticElementNumber;
}
C#代码:
[DllImport(“ MFCDll.dll”)]
公共静态外部布尔GetArray(整数ElementNumber,[MarshalAs(UnmanagedType.LPArray,SizeParamIndex = 0)]双[] BaseAddress);
private void MenuItemFileGetArrayOnClicked(对象发送者,RoutedEventArgs e)
{
//获取数组数据.
int ElementNumber = GetArrayElementNumber();
double [] doubleArray = newdouble [ElementNumber];

GetArray(ElementNumber,doubleArray);
//显示数据.
mainGrid.Children.Clear();
ListBox listBox = new ListBox();
foreach(doubleArray中的双精度数字)
{
listBox.Items.Add(数字);
}
mainGrid.Children.Add(listBox);
}
有了这三个功能,通常更容易在C#平台上重用C ++代码.
C#是三种主流的OOP(面向对象编程)语言(C ++),它们之间有太多共同点,它们的语法和编程概念在大多数情况下是相互兼容的,并且精通它们. 一个对C ++尤其有用对于程序员来说,学习Java和C#并不困难,唯一需要花费时间的地方就是熟悉这两个库.
在这三者中,C ++是我最熟悉和最喜欢的一种. 学习C#时,不可避免的要与C ++进行比较. 现在,我将总结C#和C ++之间的区别. 这是我花了大约三个小时阅读的“ C#Primer Chinese Edition”的前两章. 不可避免地会有许多错误和偏差. 目前,写下并稍后进行更正.
1. C#与Java类似. 编译后,它不是机器代码,而是在虚拟机中运行的元指令. 它做了更多的安全考虑,没有指针,不能直接操纵内存,而自动实现内存管理. C ++中的指针带来了极大的灵活性和效率,但同时也带来了很多使用上的困难. C ++程序中的绝大多数问题都来自对指针的不正确使用. C#脱离了软件安全性. 没有考虑和语言易用性的指针.

用C#实现自动垃圾回收,并通过new在堆中创建对象,并在对象的引用计数为0时回收内存. 类具有构造函数,但功能不足.
C#没有指针的概念,只有引用和值之间的区别. 内部数据类型(例如int和由struct定义的类型)是数据类型,并且在复制时执行深度复制. 类定义的字符串和类型是引用类型,复制时对应于深度复制执行浅表复制,通过引用计数对象和内存管理来实现.
可以使用指针轻松实现的C ++函数,C#需要引入许多其他机制. 例如,C ++函数指针在C#中称为委托. C#中的参数传输分为两种: 值传输和地址传输. 传输地址时,需要添加ref或out(回传更改)关键字.
C#中的常量与C ++中的常量不同. 它指的是编译时的常量,运行时的常量必须用readonly指定.
2. C#的OO功能更加全面. 一切都是对象. 没有独立的功能. 程序入口Mai()函数是对象的公共成员函数.
所有对象都是从Object派生的,包括内部数据类型int,float,string等. 它们只是System.int32等的别名. C#中没有模板. 通过将参数设置为Object类型以实现类似功能,其下调类似于C ++中的dynamic_cast运算符.
C#的头文件,变量,函数和类在定义和声明之间没有任何区别. 代码分离只能通过设计抽象类来实现. 尽管C ++在这方面并不完美,但它比C#好得多.
属性和索引在C#中可用. 属性与C ++中的GetValue()和SetValue()成员函数相似,但是它们的用法有所不同. 索引类似于C ++中的重载运算符[].
在C#中,可以初始化类中的成员变量声明,但不能在C ++中初始化. 两者都可以在构造函数中初始化成员变量. 可以在静态构造函数中初始化C#中的静态成员变量,并在首次使用该类时调用静态构造函数,而在C ++中,在装入编译单元时初始化静态成员变量.
3. 在C#的语法中添加了Foreach(typevinlist)语句; C ++需要使用C ++标准库的功能来实现类似的功能.
与C相比,C ++引入了许多便于实现OOP的功能,以及软件工程中考虑的功能. 许多C ++程序员(包括我)都深深地体会到它的广泛精神. 同时,它继承了C语言的介绍和美,试图以统一的样式实现尽可能多的功能,例如运算符重载和模板. 与C ++相比,C#更加复杂,and肿,凌乱.
附加:
他需要考虑项目的需求
是快速运行的程序还是快速开发的程序

C#无需使用麻烦的mfc类,无需头痛* .h ......
基于FrameWork的C#,您可以调用FrameWork封装的类,当然也可以使用api.
但是,C#的执行已通过虚拟机,并且执行速度比VC慢

从学习难度的角度来看: C ++更加困难. C#更容易. 但是,C#通常易于学习且难以掌握,而C ++则很难学习和使用. (这句话可能有争议,但房东可以自己理解). 从学习的角度来看: C#在RAD领域是无敌的. C ++在高性能服务应用程序中是无与伦比的. OO是C ++中最好的. 掌握它之后,就可以立即使用C#和Java
面向C语言的过程编程语言
c ++面向对象编程语言
它们本质上是不同的. 它们实际上是两种语言,但是c ++与c语言兼容.
c#是Microsoft的一种新近退出的语言,Microsoft希望与当前的Java竞争,
c#语言仍不成熟,处于开发阶段. 与以上两种语言相比,c#的最大特点是没有指针.
学习它们时,语言非常相似,但是编程的思想却完全不同.
分析C,C ++和C#之间的区别
C语言是编程界公认的官方语言. 在编程领域,有人称她为世界语. 许多高级程序工程师给她很高的评价. 确实,她还是许多编程语言(例如C ++和C#)的鼻祖. 从它发展而来. 但是毕竟,她是编程领域中一种相对原始的语言,但她也有缺点. C是一种完全的过程语言,可以用于开发小型程序,但是在开发大型程序时c语言对应汇编语句,这似乎很费力,并且其面向过程的功能也造成了她的缺点. 在开发程序的过程中c语言对应汇编语句,它需要考虑程序操作的每个细节,例如程序从何时运行到需要完成的时间,必须一一排列,就像电影脚本完全按照脚本,因此程序代码繁琐,低效且容易出错. 就在几天前,计算机操作系统老师安排了一项作业来模拟美发师的算法. 我使用了一个非常愚蠢的方法,使用计时器来列出逐步执行的操作(如脚本),这等效于面向过程的思考. 请批评并纠正我,
为了解决这个问题,引入了面向对象的思想. 面向对象的关键是类的引入. 类的封装,继承和多态性大大简化了程序编写,并提到了代码重用率. 在这种环境下,C ++应运而生,她既面向过程又面向对象,并且继承了C语言的所有优点,并且对C语言功能进行了许多扩展. C ++可以视为C的增强版本. 但是,C ++仍然存在问题,对于初学者来说非常复杂且繁琐,难以学习和掌握. C#的出现很好地解决了这个问题. 与C和C ++相比,她易于学习,易于使用并且具有软件知识. 它在教育普及中有极好的效果,但她的缺点也很明显. 她是一种完全面向对象的语言,并且由于易于学习,因此是一种相对简单的编程语言,只能用于开发纯软件. 但是它不能用于开发硬件驱动程序或系统软件以及与硬件紧密相关的其他软件,但是她仍然赢得了大多数初学者的青睐.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-165845-1.html