NEW の意味

タグの編集
投稿者 K  (社会人) 投稿日時 2011/10/22 18:09:33
こんにちは。

超初歩的な質問ですが、
dim xxx as new ***
のnewはどういうときに必要なのでしょうか。

dim xxx as new string
とはなぜ書かないのでしょうか?
投稿者 名無し  (社会人) 投稿日時 2011/10/22 18:49:15
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1127027911
ここに回答の一部があるのでは
投稿者 shu  (社会人) 投稿日時 2011/10/22 23:36:49
> dim xxx as new string
これは正式な書き方だと
dim xxx as new String()
となりこれは引数なしのコンストラクタによる初期化を表します。

ところが
http://msdn.microsoft.com/ja-jp/library/system.string.string(v=VS.80).aspx
にあるようにStringクラスには引数なしのコンストラクターがないので
この書き方をするとそういうコンストラクタは定義されていませんとエラーになります。

String変数への値の設定は上記MSDNのヘルプにあるコンストラクターによる初期化を行う
方法もありますが、一般的には文字列定数の代入、文字列を返す演算とか関数等の結果を代入
するという方法になります。newも代入もしない状態だと変数はNothingになり値を参照することが
できません。
投稿者 陸羽  (社会人) 投稿日時 2011/10/23 07:05:49
New=インスタンス
じゃないの?

stringとか、配列はNewキーワードを省略できるんですよ。(2010)

質問者くんのコードは、宣言とインスタンスを同時に行うプログラム。

インスタンスの項目を勉強しましょう。
投稿者 るきお  (社会人) 投稿日時 2011/10/24 13:19:14
>dim xxx as new ***
>のnewはどういうときに必要なのでしょうか。
***のインスタンスを作成してxxxに代入するときに必要です。
①別の行でNewを書くのであれば1行にまとめる必要はありませんし、
②自分でNewするのではなく、別の場所で既にインスタンス化されているものを代入するのであれば、
この場合も自分でNewは書きません。

①の例
Dim f As Form
f = New Form
MsgBox(f.BackColor.ToString)


②の例
Dim f As Form
f = Me
MsgBox(f.BackColor.ToString)


>dim xxx as new string
>とはなぜ書かないのでしょうか? 
一部の型は、特別なインスタンスの記述方法があるためNewを使わないことがあります。
上記の②と同じです。
String型の場合 " でくくることでインスタンスを表現でき、自分でNewする必要はありません。
例(②と見比べてください。)
Dim s As String
s = "ABCD"
MsgBox(s)




投稿者 陸羽  (社会人) 投稿日時 2011/11/16 19:47:18
NEWでも

こんなものもあるしね。

クラス

sub new()
a(0)=ソリッドブラシ青:a(1)=ソリッドブラシ透明

end sub

エンドクラス

このnewもNewだが。