[解決済み】数値が範囲内にあるかどうかをエレガントにチェックする方法とは?
2022-04-08 15:22:29
質問
C#でエレガントに行うにはどうしたらよいでしょうか?
例えば、1~100の数字があります。
私は、単純な
if (x >= 1 && x <= 100)
しかし、C#/.Netには多くのシンタックスシュガーや新しい機能が常に追加されているため、この質問では、よりイディオム(エレガントと呼ぶこともできる)な書き方について尋ねています。
パフォーマンスは気になりませんが、人々が提案をコピーペーストする可能性があるので、O(1)でない解決策にパフォーマンスの注意を追加してください。
解決方法は?
いろいろな選択肢がありますね。
int x = 30;
if (Enumerable.Range(1,100).Contains(x)) //true
そして、確かに基本的な
if
のように、順序を逆にして書くと、よりエレガントになります。
if (1 <= x && x <= 100) //true
また、次のことも確認してください。 SOポスト は、正規表現のオプションです。
注意事項
-
LINQ ソリューションは、厳密にスタイル ポイントのためのものです。Contains はすべてのアイテムに対して反復するので、その複雑さは O(range_size) であり、通常範囲チェックで期待される O(1) ではありません。
他の範囲に対するより一般的なバージョン(第2引数が end ではなく count であることに注意)。if (Enumerable.Range(start, end - start + 1).Contains(x)
-
という誘惑があります。
if
を使わずに解決します。&&
のように1 <= x <= 100
- しかし、C#では、演算子 '<=' を 'bool' 型と 'int' 型のオペランドに適用できないという構文エラーが発生します。
関連
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] JavaScriptでカンマを桁区切りにして数値を表示する方法
-
[解決済み] JavaScriptで特定の範囲のランダムな整数を生成する?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] JavaScriptで文字列を整数に変換する方法は?
-
[解決済み] 先頭のゼロを含む表示番号
-
[解決済み] 数値が浮動小数点数か整数かを確認するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み】Nullableオブジェクトは値を持たなければならない?