[過去ログ] C#, C♯, C#相談室 Part94 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
937(6): (ワッチョイ c702-p36F) 2021/12/12(日)04:59 ID:/1pFbOYv0(1/3)調 AAS
入力を検知したときにメソッドを実行する処理において、
要素Aがnullでなく(エラー防止)、Aの子要素Boolがtrueの場合のみ処理をスキップしたい場合に いい書き方はありますか?
!A.Bool でメソッドを実行にしてしまうとAがnullだったときに実行されなくなってしまうので……
ひとまずgotoを使って以下のようにしているのですが、もっとスマートな書き方ありますでしょうか
if (Input)
{
if(A != null){
if(A.Bool){
goto INPUTSKIP;
}
}
Method();
}
INPUTSKIP:
939(2): (ワッチョイ df89-+2Rn) 2021/12/12(日)08:23 ID:V78zeb460(1/3)調 AAS
>>937
こう?
if (Input)
{
if (A != null && A.Bool)
{
// INPUTSKIP
}
else
{
Method();
}
}
941: (ドコグロ MM9f-JVtf) 2021/12/12(日)10:16 ID:2rSkF5hnM(1)調 AAS
>>937
goto 使いたくないと言うなら A が null か、A.Bool が false の時に処理したいってことだから普通に
if(A == null || !A.Bool){ 処理 }
って書くか>>938が言うnull条件演算子とnull合体演算子を使って
if(!(A?.Bool ?? false)){ 処理 }
でいける
個人的にはこの場合だと上の方がわかりやすいと思う
952(2): (ワッチョイ a701-4A0X) 2021/12/13(月)09:12 ID:7pnzZ4JB0(1)調 AAS
>>937
条件式をネストしたり&でつないだりと複雑にするのは難読性が高くなるから分けたほうがいいだろ
どういう条件ならMthod()を呼ぶのか明確に
if(Input){
//事前処理
judge=(A==null) ? true: //Aがnullのとき
A.Bool==false ? true: //Aの子要素がfalseのとき
false; //それ以外
if(judge) Method();
//共通処理
...
}
955(2): (ワッチョイ bf62-Trcr) 2021/12/13(月)14:01 ID:z2L+bKXw0(1)調 AAS
メソッドにすんのはいいけど、>>937 が入力を検知したときメソッドを実行したいって言ってんだからその通りに書けばいい
設計書通りに条件分岐すりゃいいのに無駄に置き換えて実装する人多いけどなんなんだろうね
if(入力検知(input, A)){
Method();
}
bool 入力検知(bool input, A a){
return input && a != null && a.Bool;
}
956(1): (アウアウウー Sa6b-p36F) 2021/12/13(月)14:22 ID:6wRfW5vFa(1/2)調 AAS
昼飯食いながら適当だから何か勘違いしてるかもしれないけど、>>937って要は
ある条件を満たした時だけMethodを実行したい、それだけでしょ?
だったら四の五の言わずに素直にそう書くのが一番じゃないの。
if( input && (!A?.Bool ?? false)) Method();
961: (ワッチョイ df01-c3Ov) 2021/12/13(月)16:35 ID:zykNHKxZ0(2/2)調 AAS
>>955,956
>>937を読む限りでは入力を検知する処理と
検知した後に特定の処理をスキップするかどうかを判断する処理は別じゃないのかな?
「A.Boolがtrueなら入力を検知しない(or 入力を無視する)」ってことなら
入力よりも先にA.Boolを確認するよね
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.040s