- PR -

vb2005 一致・不一致の比較の一般的な演算子

1
投稿者投稿内容
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2008-07-24 17:33
お世話になっております。
よろしくお願いします。

今回は困っているわけではないのですが、質問させてください。

タイトルにある件です。
vb2005 で比較文を記述するとき、
使える演算子は "=", "<>", "Not = " と文字列比較に "Like", オブジェクトの比較に"Is", "IsNot" がありますが、
みなさまはどのように使い分けてらっしゃいますでしょうか。

例を挙げるとこんな感じでしょうか。
コード:
        Dim A As String = "aaa"
        Dim B As String = "bbb"
        Dim C As String = "aaa"

        ' 素直に "="
        If A = B Then Console.WriteLine("A と B は一致します。")
        If A <> B Then Console.WriteLine("A と B は不一致です。")

        ' Like を使う
        If A Like C Then Console.WriteLine("A と C は一致します。")
        If Not B Like C Then Console.WriteLine("B と C は不一致です。")

        ' 気分で混ざる
        If Not B = C Then Console.WriteLine("B と C は不一致です。")

        ' 数値の比較の場合
        Dim D As Integer = 123
        Dim E As Integer = 124
        If D <> E Then Console.WriteLine("D と E は不一致です。")
        If Not D = E Then Console.WriteLine("D と E は不一致です。")

        ' オブジェクトの比較
        Dim F As Object = Nothing
        Dim G As Object = "A"       ' 例ですのでカンベンしてください。
        If F Is Nothing Then Console.WriteLine("F は Nothing です。")
        If F IsNot G Then Console.WriteLine("F は G と一致しません。")

        Console.Read()


特に知りたいのが、
あちらこちらのサイトを拝読しますと、VisualBasic に依ったコーディングは避けて書くのが主流なのかな、と感じています。
ですが、"Like" には便利な機能もありますし、
VBだけ使ってる分には汎用性は無視してもいいんじゃないかな、とも思います。

くだらない質問かもしれませんが、みなさま是非よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-07-24 18:09
引用:

とある根性なしさんの書き込み (2008-07-24 17:33) より:

使える演算子は "=", "<>", "Not = " と文字列比較に "Like", オブジェクトの比較に"Is", "IsNot" がありますが、
みなさまはどのように使い分けてらっしゃいますでしょうか。


値型と参照型が理解できていれば明確のような気がしますが何か不安がありますでしょうか? また Like に関しては用途がまったく異なるものですからなぜここに挙がっているのかわからないです。

挙がっている項目についてですが、"用途の使い分け" と "単純なゆらぎ" を混ざっているので混乱します。 ゆらぎについては別の質問として分けた方が良いと思います。 ゆらぎなら、
  • "=" と "<>" と "Not [c1] = [c2]"
  • "IsNot [object]" と "Not [object] Is" と "Is [object] = False"
などになるでしょう。 (Equal メソッドや ReferenceEqual メソッドはさすがに除きました)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2008-07-24 18:18
へ〜、VB には Like 演算子なんてものがあるんですね。
調べてみた所、実際は LikeOperator クラスの LikeString メソッドを呼び出しているようですね。

引用:
とある根性なしさんの書き込み (2008-07-24 17:33) より:
特に知りたいのが、
あちらこちらのサイトを拝読しますと、VisualBasic に依ったコーディングは避けて書くのが主流なのかな、と感じています。
ですが、"Like" には便利な機能もありますし、
VBだけ使ってる分には汎用性は無視してもいいんじゃないかな、とも思います。



別に無視して構わないと思いますよ。
C# で書きなおすなんてことも滅多にないでしょうし、あったとしても LikeString メソッド使えばいいわけですし。
移植性以外の問題もたぶんなさそうなので、使いやすいものは使った方がいいと思います。

_________________
C#と諸々
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-07-24 20:44
文字列だから、そんな風に思えてしまうのですよ。自作クラスでやってみたらわかります。

あと、調べるなら deep copy に付いても調べてみましょう。根は同じ問題です。
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2008-07-28 23:41
お礼が遅くなりまして、大変申し訳ありません。
返信ありがとうございます。

>じゃんぬねっとさん
1行目を読んでハッとさせられました。
なるほど明白ですね。
基本をすっ飛ばしてやってしまっていることを痛感いたします。

>よこけんさん
そうなんですよね、書き直すなんて滅多にないですよね。
開発経験が少ないものですから、どうにも微妙なラインの線引きがわからないのです。
ですがこうスパッと言っていただけると、スッキリします。

>Jittaさん
対象のインスタンスをどのように扱うかという点で根は同じ
という理解でよろしいでしょうか。
このように示していただくと、いろいろ理解できて有難いです。


ご返答ありがとうございました。
大変勉強になりました。
またよろしくお願いいたします。
1

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