• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:結果が必ずTrueになってしまいます。)

PowerShellで入力要求されたテキストボックスに何も文字を入れない状態でOKを押してもifブロックが実行されてしまう

このQ&Aのポイント
  • PowerShellでテキストボックスに何も文字を入れない状態でOKを押したときにifブロックが実行されてしまう問題が発生しています。
  • 試行1および試行2を行いましたが、両方ともifブロックが実行されてしまいます。
  • 原因がわからず困っており、解決策を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

#2訂正。 $nullc → $null (単なるタイプミス) ×(型が決定されたことで、型の初期値になる) ○String型の初期値はnull。ブログの通り、戻り値がStringにキャストされた結果、空文字列が代入される。

kureakai
質問者

お礼

教えていただいた内容でなんとかなりました。 ご教授ありがとうございました。

その他の回答 (2)

回答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 で判断せず、文字列の長さで判断すれば?