[トピック内 6 記事 (1 - 6 表示)] << 0 >>
2019/04/11(Thu) 11:30:58 編集(投稿者) はじめまして。 C言語で以下のような構造体の配列になっているコードがありまして、それをC#に移植したいと考えているのですが、実現可能でしょうか。 アドバイス等いただけると幸いです。 static struct { uint16 code; byte (*func)(void); } table[] = { { 0x0001, test1 }, { 0x0002, test2 } }; よろしくお願いいたします。
■No90706 (つけぺん さん) に返信 > C言語で以下のような構造体の配列になっているコードがありまして、それをC#に移植したいと考えているのですが、実現可能でしょうか。 > アドバイス等いただけると幸いです。 > > static struct { > uint16 code; > byte (*func)(void); > } table[] = { > { 0x0001, test1 }, > { 0x0002, test2 } > }; > table 内の code に一致した func を呼び出すという形にするなら、 Dictionary<ushort,Func<byte>> table; でいいと思いますよ。 利用個所も下記のようにごくごくすっきりと書けます。 if( table.TryGetValue( search, out var func ) ) { var result = func(); //... }
どうしても配列的に扱いたいという場合は、 foreach( var pair in table ) { if( pair.Key == search ) { byte result = pair.Value(); // いろいろ。。。 break; } } という感じでの操作も可能です。 ただ、実際の構造体はもっと大きいとか、 書いてないことがあるとなると、話は変わってきますけど。
管理者用
- Child Tree -