C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VB6 Callについて


(過去ログ 45 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■24223 / inTopicNo.1)  VB6 Callについて
  
□投稿者/ オガシン (68回)-(2008/08/29(Fri) 14:50:24)

分類:[VB6 以前] 

2008/08/29(Fri) 16:03:49 編集(投稿者)
2008/08/29(Fri) 14:51:02 編集(投稿者)

<pre><pre>VB.NET登場以降にこの業界に入ったのでVB6以前での開発は経験がありません。
(メンテはしたことがあります)

疑問に思ったのがタイトルの通りですが「Call」ステートメントです。

[Call] オブジェクト名.メソッド名()
オブジェクト名.メソッド名()

あってもなくても同じですよね?(戻り値が無視されるのは調べました)
「あえて」書く必要があるのでしょうか?
以前の書き込みでDoEventの件がありました。
DoEventの様に今は使わないほうが良い、等ありましたらアドバイスいただけませんか?

C#ではこのCallはサポートされていませんよね。
VB6とVB.NETがごっちゃになってるソースを見るとわけが分からなくなってきますOrz

よろしくお願いします。

<変更>図表モードにしました</変更></pre></pre>
引用返信 編集キー/
■24225 / inTopicNo.2)  Re[1]: VB6 Callについて
□投稿者/ Mr.T (278回)-(2008/08/29(Fri) 15:21:09)
2008/08/29(Fri) 15:21:46 編集(投稿者)

Mr.Tです。


> 疑問に思ったのがタイトルの通りですが「Call」ステートメントです。
>
> [Call] オブジェクト名.メソッド名()
> オブジェクト名.メソッド名()
>
> あってもなくても同じですよね?(戻り値が無視されるのは調べました)
> 「あえて」書く必要があるのでしょうか?


えー、メソッドをコールしている、ということがきちんとわかりますwww
VB6.0以前までは、

call 関数(引数,...)
もしくは
関数 引数,引数,引数,...
という書き方ができたのですが、VB.NETでは、メソッドには必ず()がつくようになりました。

引用返信 編集キー/
■24227 / inTopicNo.3)  Re[1]: VB6 Callについて
□投稿者/ nakaP (27回)-(2008/08/29(Fri) 15:29:57)
No24223 (オガシン さん) に返信

そうですねー、メソッドを呼び出しているというのが分かりやすいのと、
引数をかっこで囲むよう強制されるので見やすいということぐらいですか。
#引数が無い場合は消されますがw
引用返信 編集キー/
■24228 / inTopicNo.4)  Re[1]: VB6 Callについて
□投稿者/ よねKEN (178回)-(2008/08/29(Fri) 15:35:09)
#分類は[VB6 以前]の方がいいと思います。

No24223 (オガシン さん) に返信
> 2008/08/29(Fri) 14:51:02 編集(投稿者)
>
> VB.NET登場以降にこの業界に入ったのでVB6以前での開発は経験がありません。
> (メンテはしたことがあります)
>
> 疑問に思ったのがタイトルの通りですが「Call」ステートメントです。
>
> [Call] オブジェクト名.メソッド名()
> オブジェクト名.メソッド名()
>
> あってもなくても同じですよね?(戻り値が無視されるのは調べました)

意味は同じです。
Call文を明記することで関数/メソッドの呼び出しであることを明記できる、という程度のものです。

元来のBASICの構文で代入文は、
LET A = 10
のようにLETと記述します。実際にはLETは省略可能であり、
大昔のBASICの時代でもVB6時代でも一般的に省略して書く方が普通でした。
では、何故こんな構文があるのか?といえば、
BASICという言語のそもそもが初心者の教育用途であったことに由来すると思います。
(日本人にわかりやすいかどうかは別にして英語圏の人にはわかりやすかった
(or 少なくとも設計者はそう考えた)のだと思います)

Call文の文法上の意味合いはそんなところです。

ただし、IDE上のソースコードの整形には多少、影響があります。

関数Funcが定義してあるとして、戻り値を使用しない場合のその呼び出し方法は、

Call Func(10)

もしくは、

Func 10

という記述になります。Func(10)と書くことはできません。環境がないので確認できませんが、

Func(10)

と記述するとIDEによって整形され、

Func (10)

となると思います。ちなみに「Fucn 10」という記述と「Func (10)」という記述は、
微妙に同じ動作ではないので注意が必要です。
引数に渡す値が10ではなく変数iだったら、
「Func i」と「Func (i)」は同じ結果にならないかもしれません。
#その辺の事情についてはマニアックすぎるので割愛。
#この件については、「へぇ、違うかもしれないんだぁ」程度に頭の片隅に置いておいてもらえばよいかと

> 「あえて」書く必要があるのでしょうか?

Callを書くスタイルでも、書かないスタイルでもどちらでもよいです。
既存のソースの改修なら、そのソースの流儀に合わせておいた方がよいでしょう。

引用返信 編集キー/
■24232 / inTopicNo.5)  Re[2]: VB6 Callについて
□投稿者/ オガシン (69回)-(2008/08/29(Fri) 16:03:14)
2008/08/29(Fri) 16:04:25 編集(投稿者)

Mr.Tさん、nakaPさん、よねKENさん
返信ありがとうございます。

現行のソースコードを見ていて

Form.Show 1
Form.Show vbModal

とか書いてあり
これメソッドよんでんの?、1ってこんなところに書いてあって
コンパイルエラーじゃないの?って思っていました。
なぞが解けました、ありがとうございます。

Callについてもなぞが解決しました。
やはりあってもなくてもそんなにかわらないんですね。
ただ、それをVB.NETでの設計書のコーディングサンプルに「Call」なんて
書いてあったので、この人どういう意図で書いてるのかなぁと思うばかりです。
#この人.NETというか、オブジェクト指向わかってんのかなぁって感じです。

C#では使えないし、オブジェクト指向的には「オブジェクト名.メソッド名()」と
書いたほうが誤解がないきがしますね。

ありがとうございました。

P.S. 分類はVB6以前にしておきました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -