Created
January 8, 2014 11:16
-
-
Save KentaYamada/8315304 to your computer and use it in GitHub Desktop.
インスタンスオブジェクトとスタティックオブジェクトの違い(Written by C#) 「インスタンスオブジェクト」
newキーワードによってインスタンス化されたクラスをメモリをヒープ領域へ割り当てる。
インスタンス化された領域ごとに値を持つため、目的のオブジェクトの情報へアクセスする場合はオブジェクト経由でアクセスすることになる。 「スタティックオブジェクト」
インスタンス化できない固有のオブジェクト。
メンバーへのアクセスはクラスから直接行う。同じくヒープ領域へと割り当てられるが、インスタンスオブジェクトとは違い、システムが開始されたと同時にオブジェクトが作られ、終了するまで存在している。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
class MainProgram | |
{ | |
static void Main() | |
{ | |
//インスタンス化されたクラスは、オブジェクト毎に情報を保持する。 | |
var instance1 = new InstanceObject(); | |
instance1.Name = "Yamada"; | |
var instance2 = new InstanceObject(); | |
instance2.Name = "Suzuki"; | |
Console.WriteLine(instance1.Name); //Yamada | |
Console.WriteLine(instance2.Name); //Suzuki | |
StaticObject.Name = "Yamada"; | |
//ここでは仮に別オブジェクトからアクセスされたと思って下さい。 | |
StaticObject.Name = "Suzuki"; | |
//固有クラスに直接アクセスして値を書き換えるので、値が変更されてしまう。 | |
//Static Class = 共有オブジェクトだというイメージだとわかりやすいかも | |
Console.WriteLine(StaticObject.Name); //Suzuki | |
} | |
} | |
class InstanceObject | |
{ | |
public string Name{ get; set; } | |
} | |
static class StaticObject | |
{ | |
//スタティッククラスを定義する場合、メンバーは必ず「static」キーワードを付けなければエラーとなる | |
public static string Name{ get; set; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment