C++代码转换为C#该如何处理
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#的,因为我对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