首页 > .net > .net技术/ 正文
人们常常说,作为一个.NET的程序员,至少要懂得里面三门语言中的一种。当然,最好的是三门都懂。虽然有人说,现在用的最好的.NET的原装语言不是C#吗?那我还学C++.NET这个累赘干什么?当然,c++.net又分为For Win32的MFC和For Win64的.NET,也就是所谓托管C++。
这里专门针对托管C++。
让想学托管C++的人有一个比较初步的认识。
与C#的区别。
1:C++.NET允许声明全局变量,C#不支持。
2:C++.NET的静态方法需要用成员运算符来引用。C++.NET的成员运算符是::。而C#的是点号。
例如Win64控制台应用程序。
C#版:Console.WriteLine();
C++版:Console::WriteLine();
2:C++.NET所有动态创建的类一般被声明为指针类型。
托管C++标准指针运算符是^。
示例程序:
System::Drawing::Graphics^ g=this->CreateGraphics();
3:访问被声明为指针的成员变量的方法是:
->。
示例:
this->textBox1->Text="草泥马";
4:C++.NET托管堆中构造函数使用gcnew运算符。
而C#中用new运算符。
示例:
C++.NET程序:
System::Drawing::Drawing2D::GraphicsPath^ MyPath=gcnew System::Drawing::Drawing2D::GraphicsPath();
C#程序:
System.Drawing.Drawing2D.GraphicsPath MyPath=new System.Drawing.Drawing2D.GraphicsPath();
注:
C++.NET继承了C++6.0的一些东西。所以上述程序最后的一个括号部分,C++是可以省略的,而C#是绝对不行的。
5:C++.NET的数组一律使用新版规则,原先的C++6.0数组只用于非托管部分。
以下代码在C++6.0和C#.NET中成立,而在C++.NET托管部分不成立。
int[ ] a=new int[8]; Visual C#;
int a[8]; Visual C++6.0.
对应于托管C++的形式为:
array<int>a=gcnew array<int>(8);
声明一个二维字符串数组的托管C++形式应该为:
array<array<String^>^>^ a=gcnew array<array<String^>^>(8)(6);
我也不知道微软为什么要在托管C++中搞这一套。
但是这确实让人很烦。
原先C++6.0的形式应该为:
String a[8][6];
就算是用C#,也应该是:
String[ ] [ ] a=new String[8][6];
明显要舒服许多嘛!
可能是为了和非托管的MFC相区别吧!
但是微软这个弯子也绕的太大了点。
让人颇为不习惯!
剩下的就是事件和属性的一些区别了。
6:事件委托:
Visual C#:
this.button1.Click+=new EventHandler(Button_Click);
VC++.NET:
this->button1->Click+=gcnew System::EventHandler(this,&Form1::Button1_Click);
7:属性设置:
Visual C#:
public String wori
{
get{
return wori.ToString;
}
set
{
wori=value;
}
}
VC++.NET:
property String^ wori
{
String^ get
{
return wori->ToString();
}
void set(String^ value)
{
wori=value;
}
}
。
8:
判空部分:
Visual C#:
if Components!=null;
Visual C++.NET.
if Componens!=nullptr;
9:API函数调用
Visual C#:
[DllImport ("User32.dll")]
public extern int FlashWindow(IntPtr HWnd,bool bInvert);
Visual C++.NET:
[DllImport("User32.dll",CharSet=CharSet::Auto)]
static int FlashWindow(IntPtr HWnd,bool bInvert);
大概也就这些区别吧。
感觉上做.NET还是C#要好一些。
一方面代码提示功能较强。另一方面在引用其他窗体的时候也不必包含头文件。
比如Include "Form2.h"之类的。
但是如果考虑代码兼容。要将Win32的程序升级为Win64的话,C++.NET会是最好的一个选择。
因为你如果不信,可以吧C#的程序往C++的编译器里面贴一下,你会发现一个秘密。
那就是根本行不通。
可能在这点上VC++.NET会好一些吧!
本文由软件培训网整理,转载请注明:http://www.softpeixun.com
- 上一篇:郑州.net编程实训学校
- 下一篇:.NET最新技术
更多郑州北大青鸟学费是多少呢,河南郑州北大青鸟2018年招生简章,河南省it专业学校有哪些,郑州北大青鸟招生地址,郑州电脑学校哪家好,郑州网络硬件工程师培训机构相关文章
- 搜索
-