- - PR -
VBでのNULL判定の書き方
投票結果総投票数:105 | |||
---|---|---|---|
Not o Is Nothing | 69票 | 65.71% | |
o Is Nothing = False | 13票 | 12.38% | |
Not IsNothing(o) | 12票 | 11.43% | |
IsNothing(o) = False | 11票 | 10.48% | |
|
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-19 09:35
む、やっぱり C 出身者とは意見が違いますね。 私は「配列の "型" である」ということで前者です。 「変数は配列である」については、変数名を複数形の命名をすることで解決しています。 新しいインスタンスを作る New 構文の場合は、 コンストラクタというメソッドを呼び出しているようなものなので、() をつけてます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-02-20 18:37
初めて投稿させていただきます。 質問なのですが。 Call ABC(1) - Integer渡しになる Call ABC((1)) - Boolean渡しになる これってどういうことなのでしょうか? Private Overloads Sub ABC(ByVal v As Integer) End Sub Private Overloads Sub ABC(ByRef v As Boolean) End Sub のようなOverloadsを呼び分けられるということでしょうか? | ||||||||||||||||||||
|
投稿日時: 2006-02-20 18:56
そんなことあるわけが... 等式を書けば別かもしれませんが、ありえないです。
とりあえず、VB6 ではなりませんね。 まどかさん、いつのバージョンのことを言ってるんでしょう?
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-02-20 19:09
Call ABC(1) ByRef 渡し Call ABC((1)) ByVal 渡し がごっちゃになったのでは? | ||||||||||||||||||||
|
投稿日時: 2006-02-21 00:48
いつだろう??? 昔MLで見かけたんですが、結局括弧(内側の)で囲むと評価式となりBooleanになるぞって。 じゃんぬさんの例のようにVariantがらみだったような気もします。 ま、あんまり突っ込まんでください。 | ||||||||||||||||||||
|
投稿日時: 2006-02-21 09:49
いえ、深く突っ込みます。(^^;)
括弧付きの引数を指定した場合、この括弧は引数の括弧ではなく式の括弧になるみたいですね。 Call キーワードの場合は、もともと引数リストを括弧で括らなければならないので、 もし「式の括弧」にしたいのであれば、二重になるということですね。 この場合の式の括弧というのは、評価された値という意味になります。
結果はコメントで書いたとおりです。 "余分に" 括弧で囲むと、式の評価が渡されるので、参照渡し (ByRef) したつもりでも、 元の Var の "値" が変わらないということですね。
というわけで、Variant でなくても起こります。 ただ、Variant の場合は、TypeName が変わったり変わらなかったりということはありますね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-02-22 18:02
面白いですね。こんな結果になるなんて。 考えてみれば当然な気もするんですが、気が付かずにやってしまうと恐ろしいことに なりますね。 #今考えてみると、思い当たる節が・・・orz | ||||||||||||||||||||
|
投稿日時: 2006-02-22 18:17
こう書けば判りやすいですね。
渡されるのは「Var + 1」の評価結果であって、Var そのものではありません。 そのため、参照渡しであっても Var は影響しないということですね。 (まあ、参照渡しは普通使わないので、どうでも良いんですけど)
それはないと思われます。 あるとすれば、Call キーワードなしの引数が 1 の時でしょうね。 引数が 2 つ以上の引数は構文エラーになりますので -> VB6 の関数呼び出し つまり、
なのですが、括弧が離れてしまうので気付かれるハズです。(VS6 の場合ですが)
「括弧が離れてるけど、まあいいか」で済ました覚えがあるならば、あるかもしれませんね。 でも、「参照渡し」という条件をクリアしなきゃいけませんからね。 式の結果をわかりやすくするために、括弧をつけたのであれば、それは値渡ししているハズでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |