- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:結果が必ずTrueになってしまいます。)
PowerShellで入力要求されたテキストボックスに何も文字を入れない状態でOKを押してもifブロックが実行されてしまう
このQ&Aのポイント
- PowerShellでテキストボックスに何も文字を入れない状態でOKを押したときにifブロックが実行されてしまう問題が発生しています。
- 試行1および試行2を行いましたが、両方ともifブロックが実行されてしまいます。
- 原因がわからず困っており、解決策を教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2訂正。 $nullc → $null (単なるタイプミス) ×(型が決定されたことで、型の初期値になる) ○String型の初期値はnull。ブログの通り、戻り値がStringにキャストされた結果、空文字列が代入される。
その他の回答 (2)
- himajin100000
- ベストアンサー率54% (1660/3060)
回答No.2
何も入力せずにOKをおした場合は$nullじゃなくて空文字列、つまり[String]::Empty あるいは 文字列リテラル "" つまり [System.String]$inChar = Read-Host "文字を入力して下しさい。" [System.Console]::WriteLine(($inChar -ne [System.String]::Empty).ToString()); [System.Console]::WriteLine(($inChar -ne $nullc).ToString()); これで入力した時と入力しなかった時を試してみるとわかるかと。 オマケ(型が決定されたことで、型の初期値になる): http://weblogs.asp.net/soever/archive/2006/12/10/powershell-null-and-argument-types.aspx
- memphis
- ベストアンサー率40% (975/2395)
回答No.1
長さが0なら入力無しと言うように $null で判断せず、文字列の長さで判断すれば?
お礼
教えていただいた内容でなんとかなりました。 ご教授ありがとうございました。