- PR -

Newって?

1
投稿者投稿内容
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2008-09-19 17:37
こんにちは。

VB2005でコーディングしているものです。

ちょっとした疑問で申し訳ないのですが、

VBの変数定義でNewを付けた場合と付けない場合って何が違うのでしょうか?

具体的には以下の定義をした場合、変数aは何が違うのでしょうか。

<Newなし>

Dim a as Integer

<Newあり>

Dim a as New Integer


どなたかご存知の方おりましたらご教授願います。
宜しくお願い致します。

[ メッセージ編集済み 編集者: 檸檬 編集日時 2008-09-19 17:38 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-19 17:40
引用:

檸檬さんの書き込み (2008-09-19 17:37) より:

VB2005でコーディングしているものです。
ちょっとした疑問で申し訳ないのですが、
VBの変数定義でNewを付けた場合と付けない場合って何が違うのでしょうか?


値型か参照型かで答えが変わります。

引用:

具体的には以下の定義をした場合、変数aは何が違うのでしょうか。


この場合は何も変わらないです。 MSIL を見れば、と思ったのですがそこまでする話でもないですよね。(^^;

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2008-09-19 18:00
じゃんぬねっとさん、早速の返答ありがとうございますm_m

この場合のaは何も変わらないのですねー、

てっきりC言語のポインタ的な違いがあるのではーとか思ってました。

変数の実体が割り当てられるのが初回使ったときとか。

わたし自身Newの意味を良くわからないままいままでコーディングしていたもので^^;

なんだかおまじないみたいに、クラスのインスタンス生成や配列の初期化にNewをつけてました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-19 20:32
引用:

檸檬さんの書き込み (2008-09-19 18:00) より:

この場合のaは何も変わらないのですねー、


デフォルト コンストラクタであればです。 コンストラクタにもオーバーロードがありますので、値型や基本データ型で New を使っている == 省略時と同じにはならないです。

引用:

なんだかおまじないみたいに、クラスのインスタンス生成や配列の初期化にNewをつけてました。


クラスに関してはおまじないではダメです。 参照型の場合はれっきとした理由がありますよね。 配列の初期化も要素の初期化込みでだればこれも意味が異なってきます。

# VB6 以前の時代はおまじないだと思っている人は多かったみたいですね。
# Dim Fso As New FileSysmtemObject '何か良く分からんけどこうしないとダメらしい
# みたいな。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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