- PR -

If文の表記方法について

投稿者投稿内容
紅しょうが
会議室デビュー日: 2006/06/21
投稿数: 12
投稿日時: 2007-01-26 10:06
知ってる人にとっては、すごい簡単な事かも知れませんが・・・

VB.NETで

 If ("01" = aaa) Or ("11" = aaa) Or ("21" = aaa) Or ("23" = aaa) Then

のような同じ変数の比較をorでつなげてるIf文を簡単に書くことはできないのでしょうか?
自分のイメージとしては

 If ("01" or "11" or "21" or "23") = aaa Then

とすれば出来るかなーと思ったのですが、

 「Option Strict On で 'String' から 'Long' への暗黙的な変換はできません。」

とエラーになってしまいました。

どなたか簡単な方法を知ってたら教えてください。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-01-26 10:55
とりあえずな案としては Select Case で。

コード:

  Select Case aaa
    Case "01", "11", "21", "23"
      Hogehoge()
  End Select


# もっと考えましょう運動実施中。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-26 11:05
引用:

紅しょうがさんの書き込み (2007-01-26 10:06) より:

自分のイメージとしては

 If ("01" or "11" or "21" or "23") = aaa Then

とすれば出来るかなーと思ったのですが、


Or 演算子を正しく理解していれば、この発想はないでしょう。
この式は、"01" OR "11" というビット演算から始まります。

引用:

 「Option Strict On で 'String' から 'Long' への暗黙的な変換はできません。」


ただ、相手が文字列なので当然ビット演算はできません。
そもそも、ビット演算が必要な場面ではないので、この書き方はありえないです。

それと、If で判定を書く場合は、Or ではなく、ショートサーキット評価の OrElse を使うべきです。

# リファレンスを読みましょう運動実施中。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
紅しょうが
会議室デビュー日: 2006/06/21
投稿数: 12
投稿日時: 2007-01-26 11:18
ぽぴ王子さん返信ありがとうございます

引用:

ぽぴ王子さんの書き込み (2007-01-26 10:55) より:
とりあえずな案としては Select Case で。

コード:

  Select Case aaa
    Case "01", "11", "21", "23"
      Hogehoge()
  End Select


# もっと考えましょう運動実施中。




やはり、Select Caseですかねぇ?
前にも同じような事をしようと思ったときはSelect Caseを使ったのですが、
If文でも簡単な書き方があるんじゃないかーと思って投稿してみたんです。
説明不足ですみません。
紅しょうが
会議室デビュー日: 2006/06/21
投稿数: 12
投稿日時: 2007-01-26 11:25
じゃんぬねっとさん返信ありがとうございます。

引用:

じゃんぬねっとさんの書き込み (2007-01-26 11:05) より:
引用:

紅しょうがさんの書き込み (2007-01-26 10:06) より:

自分のイメージとしては

 If ("01" or "11" or "21" or "23") = aaa Then

とすれば出来るかなーと思ったのですが、


Or 演算子を正しく理解していれば、この発想はないでしょう。
この式は、"01" OR "11" というビット演算から始まります。


すみません。
たぶん私がビット演算の例文コードをうろ覚えで覚えていたのでこんなコードを書いてしまったのです。


引用:

引用:

 「Option Strict On で 'String' から 'Long' への暗黙的な変換はできません。」


ただ、相手が文字列なので当然ビット演算はできません。
そもそも、ビット演算が必要な場面ではないので、この書き方はありえないです。

それと、If で判定を書く場合は、Or ではなく、ショートサーキット評価の OrElse を使うべきです。

# リファレンスを読みましょう運動実施中。



最近、OrElseやAndAlsoを覚えたのですが、昔からの癖でOrやAndを使ってしまいます。
以後、気をつけてます・・・
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-01-26 11:26
If文で1発でかくとしたら、正規表現しかないですかねぇ。
OrElseでつなげて書くのに比べると、かなり速度的に劣りそう。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-01-26 11:39
引用:

紅しょうがさんの書き込み (2007-01-26 11:18) より:

やはり、Select Caseですかねぇ?
前にも同じような事をしようと思ったときはSelect Caseを使ったのですが、
If文でも簡単な書き方があるんじゃないかーと思って投稿してみたんです。
説明不足ですみません。


それならそうでちゃんと最初に書いておいていただかないと…
わざわざ VB.NET のプロジェクトまで作って検証してみた僕の時間は無駄だったというこ
とになりますよね。

引用:

紅しょうがさんの書き込み (2007-01-26 11:25) より:

すみません。
たぶん私がビット演算の例文コードをうろ覚えで覚えていたのでこんなコードを書いてしまったのです。


じゃんぬねっとさんの書き方だと伝わるかな〜?と少し不安に思っていましたが、大丈夫
でしょうか?じゃんぬねっとさんの指摘を正しく認識できているとしたら、こんな返答には
ならなそうな気がするのですが。
なぜビット演算の話になったか理解できていらっしゃいます?

引用:

紅しょうがさんの書き込み (2007-01-26 11:25) より:

最近、OrElseやAndAlsoを覚えたのですが、昔からの癖でOrやAndを使ってしまいます。
以後、気をつけてます・・・


なんだか日本語が変ですね。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-01-26 11:55
もう一案。

4個程度ならSwitch関数あたりをつかってSelect文と同じようなことが出来るかな。

スキルアップ/キャリアアップ(JOB@IT)