答えて
それは、例えば、それが渡された後の値をチェックせずに
ref
を使用して1, 3, 5
などの奇数のみを受け入れるようにStatistic
を強制することは可能ですか?
いいえ、私はそうは思わない。
私は単にメソッドの開始時にチェックします:
int ExtractMedian(int Statistic)
{
if(Statistic % 2 == 0)
throw new ArgumentException("Statistic must be odd");
return ExtractionWork;
}
いいえ、それをする方法はありません。
コード契約はこれを強制するために使用する必要がありますが、基本的にコードの後処理ステップであり、その後アナライザが無効な呼び出しを参照することがあります。これらは、.NETの統合機能の一部ではありません。
どこかで奇数または偶数のチェックを行う必要があります。通常は、入力が有効であることを確認するために関数の責任にする方がよいでしょう。
これがオプションでない場合は、値が奇数にしかならないOddクラスを作成することができます。
もしあれば、私はint値を含む不変の構造体を提案します。 –
私の無知を言い訳が、なぜ不変ですか? – ToxicTeacakes
ここには[短い答え](http://stackoverflow.com/questions/441309/why-are-mutable-structs-evil)です。長い答えのために、[これを読んでみたいです。](http://stackoverflow.com/questions/3751911/why-are-c-sharp-structs-immutable) –
引数は、クラスのint値とcheck値からの暗黙的な変換を持つクラスとして宣言できます。
public class OddValue
{
private int _value = 1;
public int Value
{
get
{
return _value;
}
set
{
if (value % 2 == 0)
throw new ArgumentOutOfRangeException();
_value = value;
}
}
public OddValue(int value)
{
this.Value = value;
}
public static implicit operator OddValue(int value)
{
return new OddValue(value);
}
}
public static void test(OddValue value)
{
}
test(5);
- 1. アンドロイドで自動的に通話を受け付ける方法は?
- 2. postgresqlを設定してログイン+パスワード認証を受け付ける方法は?
- 3. Sparkがサブミット後に入力を受け付ける方法
- 4. STS/Eclipse JSエディタにJSXを受け付ける方法は?
- 5. 設定方法NumberTextBoxはdojoの数字だけを受け入れますか?
- 6. ブーストスレッド - 割り込みを受け付ける方法
- 7. (C#XNA)オブジェクトが一方向にだけ通過する文字
- 8. Uber deeplinkコールがピックアップとドロップオフのパラメータを受け付けない
- 9. Pythonプログラムで小数点以下の未入力を受け付けない
- 10. RxJavaを解析して、必要なデータだけを受け取る方法は?
- 11. 関数は任意のパラメータを受け付けません
- 12. Beegoはajaxのパラメータを受け付けません
- 13. 添付ファイル付きのメールを受け取る方法は?
- 14. NotificationManagerが通知を受け付けない理由
- 15. パラメータを特定の回数だけ呼び出す方法
- 16. JSONを受け付けないリクエストに対してエクスプレスサブアプリケーションをスキップする方法
- 17. Androidで一定時間が経過した後に通知を受け取る
- 18. tkinterボタンは高さパラメータを受け付けません
- 19. vsimはWindows上で-modelsiminiパラメータを受け付けません
- 20. Spring MVCコントローラへのGETリクエストで日付パラメータを受け入れる方法は?
- 21. Pythonクラスのコンストラクタでパラメータを受け入れる方法は?
- 22. EJBデプロイメント(タイマーの設定)に関する通知を受け取る方法は?
- 23. SDカードイベントの通知を受け取る方法は?
- 24. AVPlayerからオーディオストリーミングステータスの通知を受け取る方法は?
- 25. テキストボックスフォーカスの通知を受け取る方法は?
- 26. 複数のc2dm通知を受け取る方法は?
- 27. Angular2 +親が親から通知を受け取る方法
- 28. デリゲートをパラメータとして受け入れる方法
- 29. LocalDateをパラメータとして受け取る方法
- 30. 日付と等しいノートだけをレンダリングする方法は?
この状況でどのようにrefが役立つかはわかりません。 –
「力」とはどういう意味ですか?消費者が偶数を渡した場合、あなたは何をしたいですか? –
さて、 'ref'を使うことで、呼び出されたメソッドは呼び出し元のメソッドに反映されます。したがって、実際には"例えば "によって意味されるものは、' refパラメータ 'を渡すのと似た方法です。 – Explisam