日期:2014-05-18  浏览次数:20840 次

C++代码转换为C#
大家好,请教一个问题,希望可以帮忙,有一段C++代码,我想转换为C#的,因为我对C++不熟悉,所以实现有点困难,请各位帮忙,希望不甚赐教,在这里学习了。

C++代码如下:
typedef CMyList<PER_HANDLE_CONTEXT*,PER_HANDLE_CONTEXT > Contextlist;

下面是定义的类CMyList:
template <class theCL,class CL>
class CMyList
{
public:
//创建一个list容器的实例LISTINT
typedef list<theCL> myList;

// typedef list<int (*callback)(int,char*)> myList;

CMyList(void);
~CMyList(void);

int LinkCount;
myList useList;
myList BakList;

//销毁
void DestroyList();
//重置为空表
void ClearList();
//加在头节点
BOOL AddFirst(theCL e);
//加在头节点
BOOL AddBakFirst(theCL e);
//加在尾节点
BOOL AddLast(theCL e);
//取得头
theCL GetFirst();
//取得尾部
theCL GetLast();
//移除头
BOOL RemoveFirst();
//移除尾部
BOOL RemoveLast();
//第i个位置之前插入
BOOL InsertAt(int i,theCL e);
//删除第I个
BOOL ListDelete(int i);
//元素的数量
int GetCount();
//取得第i个元素
theCL GetAt(int i);
//删除元素
BOOL ListDelete(theCL e);
BOOL SetAt(int i,theCL e);
//取得头
theCL GetBakFirst();
BOOL RemoveBakFirst();
//元素的数量
int GetTempCount();
};



------解决方案--------------------
这个问题是这样的:

首先,转换这一部分代码:

C/C++ code

template <class theCL,class CL>
class CMyList
{
public:
//创建一个list容器的实例LISTINT
typedef list<theCL> myList;

// typedef list<int (*callback)(int,char*)> myList;

CMyList(void);
~CMyList(void);

int LinkCount;
myList useList;
myList BakList;

//销毁
void DestroyList();
//重置为空表
void ClearList();
//加在头节点
BOOL AddFirst(theCL e);
//加在头节点
BOOL AddBakFirst(theCL e);
//加在尾节点
BOOL AddLast(theCL e);
//取得头
theCL GetFirst();
//取得尾部
theCL GetLast();
//移除头
BOOL RemoveFirst();
//移除尾部
BOOL RemoveLast();
//第i个位置之前插入
BOOL InsertAt(int i,theCL e);
//删除第I个
BOOL ListDelete(int i);
//元素的数量
int GetCount();
//取得第i个元素
theCL GetAt(int i);
//删除元素
BOOL ListDelete(theCL e);
BOOL SetAt(int i,theCL e);
//取得头
theCL GetBakFirst();
BOOL RemoveBakFirst();
//元素的数量
int GetTempCount();
};

------解决方案--------------------
C++指针定义就是C#的类对象定义,而你的sockaddr_in定义为了结构体,这样使用起来就比较麻烦,因为C#处理结构体时按照值类型处理的,而不是引用地址,如果一定要用到地址的场合,建议改写为class。
另外你的数据类型对应有误,C++的long不是C#的long,C++的long是C#的int,这里有数据类型对照表,自己看:http://www.cnblogs.com/yiki/archive/2008/10/29/1321848.html