[解決済み] インスタンス化」と「初期化」の違いは何ですか?
質問
MicrosoftのVB.NETのチュートリアルで、この2つの単語が使われているのを耳にしました。変数に関連して使用される場合、これらの 2 つの単語の違いは何ですか?
どのように解決するのですか?
参照型に対する値
変数
は、2つのグループのうちの1つに分類されます。
値
タイプか
参照
のような型があります。のようなタイプ
int
と
DateTime
は
値
の型である。これに対して、作成するクラスはすべて
参照
型になります。また、C#の文字列は
参照
型になります。.NETフレームワークのほとんどのものは
参照
型です。
変数のパーツ
変数があり という名前です。 という変数があり、その 値 . 2つのパーツ .
変数の 名前 は、あなたが 宣言する とする。その 値 は、あなたが を割り当てる を指定します。
変数が初期化される
すべての変数には、常に 初期値 の値が与えられます。 が宣言された時点で . したがって、すべての変数は 初期化されます。 .
については
値
のようなタイプは
int
のように、明示的に指定しなければ、コンパイラはそれらに有効な値を与えます。
int
's
初期化
はデフォルトでゼロになります。
DateTime
's
初期化
から
DateTime.MinValue
をデフォルトで使用します。
参照
型変数
初期化
を渡したオブジェクトに初期化します。コンパイラは
を割り当てます。
にオブジェクト(すなわち有効な値)を割り当てなければなりません。この場合、値は
null
- のように何もありません。ということで、参照先は
初期化
をnullにします。
オブジェクトのインスタンス化
人間は生まれる。オブジェクトはインスタンス化される。赤ちゃんは インスタンス であり、オブジェクトは インスタンス であり、あるクラスのインスタンスです。
を作成する行為は インスタンス と呼ばれるものです。 インスタンス化 (ジャジャーン!)
そこで 宣言する , 初期化 そして インスタンス化 はこのようにまとまります。
MyClass myClassyReference = new MyClass();
上記で、"... のインスタンスを作成する、というのは誤りです。 オブジェクトのインスタンスを作成する ..."です。
edit - コメントによる議論に触発されて
3つの異なることが、異なる用語を用いて進行しており(上記)、その用語は互換性がありません :
-
参照変数が宣言されています。
MyClass myClassyReference
-
オブジェクトのインスタンス化 (...から/与えられた
クラス
から、または暗黙のうちに)
new MyClass()
-
オブジェクトは変数に代入される。
=
.
事実を再確認する。
-
参照型変数は、単に "参照" とも呼ばれます。値型変数(quot;value-type variable)は参照ではありません。
-
この: "objectA is an instance of an object"は深く間違っています。もし objectA が objectB のインスタンスであるなら、objectA は objectB のタイプ (それが何であれ) と現在の状態 (それが何であれ) で人生を始めるということでなければなりません。オブジェクトBの変化に合わせてオブジェクトD、E、Fを作るというのはどうでしょうか?いやだ、いやだ! オブジェクトはその型、定義、および値をクラスから取得します。
-
MyClass myClassyReference = null
一般的に、私たちは "the variable is assigned to null" とは言いませんし、"the variable is referencing null" とも決して言いません。
実用的なアプリケーションです。
-
あなたのコードを指差して、"このインスタンスは無効なプロパティを持っていると言います。おそらくそれがループが失敗する理由です。インスタンス生成時にパラメータを検証する必要があります。
-
私はあなたのコードでこれを参照してください。
MyClass myClassyReference; myClassyReference.DoSomething();
nullなので、何も参照されていません。そのため、メソッド呼び出しは例外を投げます。
編集を終了する
存在の耐えられない軽さ
A 参照型 変数の名前と値は独立して存在します。そして、私は独立していることを意味します。
というのは インスタンス化された オブジェクトは、それへの参照を持つことも持たないこともあります。
ある インスタンス化された オブジェクトはそれに対する多くの参照を持つことができます。
A が宣言した の参照は を指している オブジェクトを指しているかもしれません。
関連
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み] 算術演算でオーバーフローが発生した
-
[解決済み] Chr(3)は定数式なのに、Chr(172)は定数式でないのはなぜですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み] VB.NETで条件付き三項演算子はありますか?
-
[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?
-
[解決済み] Kotlinのvarとvalの違いは何ですか?
-
[解決済み】VB.NETのAndとAndAlsoの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] VB.netの開閉フォーム
-
[解決済み] VB.NETのAndとAndAlsoの違いは何ですか?
-
[解決済み] VB.NET: FormClosing()を中止する
-
[解決済み] インデックスが配列の範囲外であった
-
[解決済み] VB.NET: DataGridViewをクリアする
-
[解決済み] vbLf、vbCrLf、vbCrの定数の違いについて
-
[解決済み] C#の'?'演算子に相当するVB.NETはありますか?
-
[解決済み] VB.NETにおけるクラスとモジュールの比較
-
[解決済み] Linq to Sql: 複数の左外部結合
-
[解決済み] VB.NET IntelliSense : ENTERオートコンプリートで改行を無効にする