私は列挙型とint型の配列を返す必要がある何かに取り組んでいます。私は全体の問題を回り、列挙型の代わりにintを使用して配列の最初の要素として追加することができますが、列挙型はコードの読みやすさに本当に役立ちます。同じ時間に両方を返す方法はありますか?C#enumとint配列を返す
答えて
これには3つの一般的な解決策があります。適切である1 は、特定の状況やあなたの個人的な好みに依存する:
は、それらのいずれかの
out
パラメータを使用します。これは新しいタイプを必要としませんが、電話には不便です。さらに、返された値間の関係を意味的に取り込むことはできません。public int[] MyMethod(out MyEnumType myEnum) { myEnum = ... int[] nums = ... return nums; }
Tuple<,>
タイプ(.NET 4.0)を使用してください。これは、既存のBCLタイプからのクローズドジェネリックタイプの構築だけを必要としますが、カプセル化されたプロパティに無意味な名前があるという事実は気に入らないかもしれません。KeyValuePair<,>
タイプもあります。またはPair<,>
タイプを書くこともできます。類似の目的。public Tuple<int[], MyEnumType> MyMethod() { int[] nums = ... MyEnumType myEnum = ... return Tuple.Create(nums, myEnum); }
int配列とenumをカプセル化するラッパークラスを記述します。より多くの作業が可能ですが、発信者と一緒に作業するのが最適です。
public class Wrapper { public int[] Nums { get { ... } } public MyEnumType MyEnum { get { ... } } } ... public Wrapper MyMethod() { Wrapper wrapper = ... return wrapper; }
私はラッパークラスを使うことを考えました。 C#がタプルを持っていることを知らなかったので、行く方法があると思います。タプルを使用してintに固執することにパフォーマンスに影響があるかどうかを知っていますか? – user472875
@ user472875:2つが論理的に意味を持つ場合、ラッパークラスは実際に行く方法になります。 –
@ user472875:ありません。それは本当に軽量です。興味があれば、逆コンパイラを使ってそのソースを見ることができます。その他のパフォーマンス上の問題と同様に、プロファイラを使用して問題が実際にラッパー(カスタムまたはタプル)の構築にあることを識別し、それぞれの代替案をプロファイルします。 – Ani
- 1. Intと* Char-C++の配列
- 2. C++ char配列をintに、intをchar配列に
- 3. Int配列の長さC++
- 4. コピーenum配列
- 5. C++/cliの文字列配列をint配列に変換
- 6. C char配列をintに変える
- 7. OBJECTIVE-C intの配列を持つスタック
- 8. C#Enumまたはint定数
- 9. C++配列をC#に返す
- 10. int配列のC++ハッシュ関数
- 11. C:文字配列からintにコピー
- 12. 文字列をint配列
- 13. C#での2次元配列と配列の返り方
- 14. C++:文字列オブジェクトをint配列にコピーする方法は?
- 15. Javaで一時的なint配列を返す方法
- 16. JavaからJNIへint配列を返す方法
- 17. 私のjavaメソッドでint配列を返す
- 18. C配列を繰り返します。
- 19. C++関数から配列を返す
- 20. C#でバイト配列をint配列に変換する際のエラー
- 21. Cでint配列の配列を作成していますか?
- 22. orderbyでint配列をソート
- 23. ENUM内の値の配列ですか?
- 24. 返すインデックス配列Objective Cの
- 25. Byte配列をC#のInt-likesに変換する
- 26. angle/javascriptのenumフラグをintにする
- 27. C++ Int関数を変更しないでint値を返す
- 28. ctypesの返り値の空値int配列へのポインタ
- 29. 関数の文字配列を返すときのエラー、C++
- 30. C/C++ enumとchar * array
答えは、合理的な選択肢を提供しますが、私は助けるが、ここで解決するために、より大きな設計上の問題があることを考えることはできません。メソッドが何をしているのか、整数の可変コレクションと列挙型を返すのかを記述できますか? –