Portierungen sind eine schöne Sache wenn man sich die Zeit vertreiben möchte ;) Bei der Portionierungen von C/C++ nach C# wird dabei immer wieder Dinge sehen die Schema F betreffen wie z.B. bestimmte Datentypen:
unsigned int -> uint unsigned -> uint unsigned char -> byte std:string -> string size_t -> Int64
Andere sehr beliebte Sachen sind Kollektionen wie Listen oder die Vektorklasse. Aus Dingen wie:
std::vector Things; std::list Things();
wird dann meist immer ein:
List<Thing> Things;
Die Map:
std::map<unsigned short, unsigned> nodes;
wird dabei durch ein Dictionary ersetzt:
Dictonary<unsigned short, unsigned> nodes;
Immer wieder schön sind die Typedefs wie z.B.
typedef std::vector<Account> Accounts;
welche bei mir dann auch in eine Liste umgewandelt werden, an den Stellen an denen sie benutzt werden:
List<Account> Accounts;
Beim portieren von Klassen werden Header und C Datei in eine gemeinsame Datei geworfen und die Doppelungen entfernt. Aus den Klassenfunktionen aller:
void Thing::MakeFoo(int value)
wird dabei ein:
void MakeFoo(int value)
Bei While Schleifen wird aus einem:
while (message.getUnreadLength())
ein
while (message.getUnreadLength()!=0)
Aus einem Vergleich:
if(!receiver)
wird ein
if (receiver!=null)
Iteratoren sind auch immer wieder schöne Sachen. Aus
for (ChatChannels::const_iterator i = mChatChannels.begin(), i_end = mChatChannels.end());
wird ein:
foreach(ChatChannel channel in mChatChannels)
Sicherlich gibt es auch noch andere Schema F Konstrukte, dies sind allerdings die bei mir am häufigsten vorkommenden.
Weitere Informationen gibt es unter:
http://stackoverflow.com/questions/3659044/comparison-of-c-stl-collections-and-c-sharp-collections
http://stackoverflow.com/questions/6274878/what-is-c-time-t-equivalent-for-c-sharp