私は列挙型と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. CでのMPI INT配列
- 4. c#npgsqlエンティティフレームワークInt配列
- 5. Int配列の長さC++
- 6. Cのint配列問題
- 7. int配列[]またはint配列[]へのポインタを返す関数
- 8. コピーenum配列
- 9. C#で文字列配列をInt配列に変換する
- 10. int配列の値を別のint配列の値に追加するC#
- 11. C#Enumまたはint定数
- 12. C++ int配列をint16_t配列に変換する
- 13. C++/cliの文字列配列をint配列に変換
- 14. C++ int配列にintを追加する
- 15. OBJECTIVE-C intの配列を持つスタック
- 16. C char配列をintに変える
- 17. C++配列をC#に返す
- 18. int配列へのポインタを引数として渡すC++
- 19. C#:HttpClient POSTパスパラメータ - 1つの文字列とint配列
- 20. マップのEnumキーと値をマップする方法<enum,enum>を文字列として返します
- 21. C:文字配列からintにコピー
- 22. intの配列へのC++ポインタ
- 23. C#ユーザーのint配列の宣言
- 24. int配列のC++ハッシュ関数
- 25. Cでのint配列の2次元配列?
- 26. intをint配列に変換する
- 27. C#2次元配列内にintとbytesを格納
- 28. C - ファイルからintとcharを配列に読み込む
- 29. 文字列をCのINT配列に分割する
- 30. C++:文字列オブジェクトをint配列にコピーする方法は?
答えは、合理的な選択肢を提供しますが、私は助けるが、ここで解決するために、より大きな設計上の問題があることを考えることはできません。メソッドが何をしているのか、整数の可変コレクションと列挙型を返すのかを記述できますか? –