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

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

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

Re[4]: VB6からの移行について(Basファイルについ


(過去ログ 35 を表示中)

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

■17542 / inTopicNo.1)  VB6からの移行について(Basファイルについて)
  
□投稿者/ ナカ (1回)-(2008/04/26(Sat) 23:20:24)

分類:[.NET 全般] 

VB.NET2005で開発を行っています。
どうぞ、よろしくお願いします。

Classファイルにする意義があまりわからないので、意見をいただけると助かります。

VB6では共通関数を一つ(実際は複数ですが)のbasファイルにPublic宣言で書いていました。
「次からはModuleを使うな」と言われましたので、classファイルにしようかと思っていますが、
とりあえず最初に書かれている「Public Modele」の部分を「Public Class」に書き換えました。
次に、その関数を呼び出している箇所を見ると、

----------------------------
call 関数名
----------------------------

となっていますので、以下のように書き換えました。機能は満たしています。
----------------------------
Dim cls As 共通関数のクラス名 = New 共通関数のクラス名

Call cls.関数名
----------------------------


ここで疑問に思う事があります。
1.共通関数はいろんな箇所で使っています。使うたびにNewしていますが、
いろいろなサイトに「Newするとコストが高い」と書かれています。
だったらModeleのままで良い気もするのですが・・・
Class化するメリットとは、開発上の都合と事だけなのでしょうか?速度的には遅くなる??

2.開放する必要はあるのでしょうか?cls=nothingのような感じで・・・

3.素人考えですが、global宣言でClassファイルをNewすれば全体で使える・・・などと思ってしまいます。
駄目だとは思いますが、毎回Newするのも面倒だし、1の質問にもありますが遅くなるような気が・・・
と思ったりしますが、やはり毎回Newした方が良いのでしょうか?


長文、失礼しました。
どうしてもわからないので質問させて頂きました。どうか、よろしくお願いします。
引用返信 編集キー/
■17543 / inTopicNo.2)  Re[1]: VB6からの移行について(Basファイルについて)
□投稿者/ はつね (625回)-(2008/04/26(Sat) 23:26:42)
No17542 (ナカ さん) に返信
> Classファイルにする意義があまりわからないので、意見をいただけると助かります。

Sharedにすれば、Newしなくても使えますよ。
NewするならIDisposableインターフェイスを使ってUsingステートメント使えるようにしたらどうでしょうか。

引用返信 編集キー/
■17544 / inTopicNo.3)  Re[2]: VB6からの移行について(Basファイルについ
□投稿者/ ネタ好き (169回)-(2008/04/26(Sat) 23:32:06)
2008/04/26(Sat) 23:33:02 編集(投稿者)

> ■No17542 (ナカ さん) に返信
もし貴方が言うModeleがVB.NETのモジュールだとするのならばClassよりもパフォーマンス的に悪いです。
それは何故かと申しますと、Modeleは属性をもとに特殊な動きをしているからです。
Modeleとすると余計な属性と処理が発生する事となりパフォーマンスは劣化します。
引用返信 編集キー/
■17548 / inTopicNo.4)  Re[3]: VB6からの移行について(Basファイルについ
□投稿者/ ナカ (2回)-(2008/04/27(Sun) 00:14:33)
>はつねさん
>ネタ好き さん

さっそくのお返事、ありがとうございます。
お二人の意見から調べてみました。
この辺りの記事を参考にしてみました。
http://www.atmarkit.co.jp/fdotnet/dotnettips/248module/module.html

これを読むと、「Public Modele」と宣言した場合、たしかにVB6と同じような感じで
使用できるけど内部的にはすべてSharedとなっているという事でしょうか。
それであれば、わざわざModeleとする必要はありませんね。

Usingですが、現在のクラスファイルにはIDisposableインターフェイスが組み込まれていません。
ところで、nothingとDisposeの違いは何なのでしょうか?Disposeが無い場合、nothingでも問題ない・・・?
参考書などを見ていても、Newしているものの破棄の処理が書かれていないサンプルが多いように思えます。
本当は破棄した方が良いのでしょうか?

追記質問で申し訳ありませんが、どうかよろしくお願いします。
引用返信 編集キー/
■17549 / inTopicNo.5)  Re[4]: VB6からの移行について(Basファイルについ
□投稿者/ ネタ好き (171回)-(2008/04/27(Sun) 00:20:31)
No17548 (ナカ さん) に返信
> >はつねさん
> >ネタ好き さん
>
> さっそくのお返事、ありがとうございます。
> お二人の意見から調べてみました。
> この辺りの記事を参考にしてみました。
> http://www.atmarkit.co.jp/fdotnet/dotnettips/248module/module.html
>
> これを読むと、「Public Modele」と宣言した場合、たしかにVB6と同じような感じで
> 使用できるけど内部的にはすべてSharedとなっているという事でしょうか。
> それであれば、わざわざModeleとする必要はありませんね。
>
> Usingですが、現在のクラスファイルにはIDisposableインターフェイスが組み込まれていません。
> ところで、nothingとDisposeの違いは何なのでしょうか?Disposeが無い場合、nothingでも問題ない・・・?
> 参考書などを見ていても、Newしているものの破棄の処理が書かれていないサンプルが多いように思えます。
> 本当は破棄した方が良いのでしょうか?
>
> 追記質問で申し訳ありませんが、どうかよろしくお願いします。

Connectionなどの今すぐ開放したいリソースを持つオブジェクトか、
カーネルオブジェクトを持つと予想出来るオブジェクトにIDisposableインターフェイスを実装します。
引用返信 編集キー/
■17552 / inTopicNo.6)  Re[4]: VB6からの移行について(Basファイルについ
□投稿者/ 渋木宏明(ひどり) (721回)-(2008/04/27(Sun) 01:22:38)
渋木宏明(ひどり) さんの Web サイト
> ところで、nothingとDisposeの違いは何なのでしょうか?

目的が異なります。

.NET では、Nothing の代入はほとんどなんの効果も持っていません。

.NET では、オブジェクトインスタンスの寿命はランタイムが管理しているため、ユーザコードから明示的にクラスインスタンスの破棄を行うことはできません。

故に、Nothing の代入が意味を持つのは、ユーザコード内で「値が Nothing であるかどうか」を見て何らかの処理を行っているような場合です。

また、IDisposable.Dispose() 呼び出しはクラスインスタンスを「破棄するもの」ではありません。

IDispsable.Dispose() は、そのオブジェクトが管理する何らかのアンマネージリソース(=ファイルハンドルやDB接続など)の解放(=ファイルハンドルを閉じる、DB接続を切断する)を行うものです。

引用返信 編集キー/
■17561 / inTopicNo.7)  Re[4]: VB6からの移行について(Basファイルについ
□投稿者/ やじゅ (324回)-(2008/04/27(Sun) 09:57:13)
やじゅ さんの Web サイト
No17548 (ナカ さん) に返信
Modele → Module ですよね。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -