VC.Net、C#.Net语法上很难想到的几点不同处

1:调用基类构造函数:
C#

public subclassname(object arg): base(arg)
{}

C++
h文件
public:
	subclassname(System::Object^ type);
cpp文件
subclassname(System::Object^ type): baseclassname(type){}

2:重写基类方法:
C#

protected override string baseclassMethod(object value)
{}

C++
h文件

virtual System::String^ baseclassMethod(System::Object^ value) override;

cpp文件
System::String^ namespace::subclassname::baseclassMethod(System::Object^ value)
{}

3:属性:
C#
public int Count{get{retrun m_Count;}set{m_Count=value;}}

C++
h文件
property virtual int Count
{
    int get(){return this->m_Count;}

    set(int value){this->m_Count=value;}
}

4:数组
C#
ItemType[] items;

C++
array<ItemType>^ items;

5:泛型
C#
public someclass<T>
{}

C++
h文件
generic <class ItemType>
public ref class ItemCollection
{}

6:生成类实例:
C#
someclass sc=new someclass();

C++
someclass^ sc=gcnew someclass();

7:获取类的类型
C#
typeof(someclass);

C++
someclass::typeid;

8:名称空间
C#
namespace A.B

	{}

C++
namespace A
{
	namespace B
	{}
}
9折叠代码:C##
#region sometext#endregion
C++
#pragma region sometext
#pragma endregion sometext

10:索引
C#
	public int this[int index]

	{

	get{return this.m_Index;}

	set{this.m_Index=value;}

	}

C++
virtual property int default[int]
{
	int get(int index){return this->m_Index;}
	void set(int index, int value){this->m_Index=value;}
}


11:同名不同返回类型的函数(继承接口)


//直接写就行了


C++

virtual someTypename^ somemethodname() = basetypename::somemethod
{
	 return this->m_InnerList->GetEnumerator();
}

12:IDispose接口

C#

someInstance.Dispose();

C++

delete someInstance;
someInstance->~SomeInstance()

13:事件注册

 C#

 someInstance.someEvent += new System.ComponentModel.Design.ComponentChangedEventHandler(this.eventProc);

C++

 service2->ComponentChanged += gcnew System::ComponentModel::Design::ComponentChangedEventHandler(this, &classname::eventProc);


14:泛型默认值

C#

T t=default(T);

C++

T t=T();


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章