2016-03-22 5 views
0

カスタムタイプを初期化すると、その内部のすべての小道具の初期化が行われますか? クライアントのメモリのパフォーマンスと消費に関してこれを尋ねています。ドットネットで 私はカスタムタイプにカスタムタイプが.NETの小道具のメモリを消費する方法

public class myCustomType 
    { 
    public string prop1 {get;set;} 
    public string prop2 {get;set;} 
    public string prop3 {get;set;} 
    public string prop4 {get;set;} 
    } 

コード内のどこかのメモリ消費の私は

var parOfmyCustomType = new myCustomType(){ prop1 = "stingToHold" }; 
var listOfCustom = new list<myCustomType>(){ parOfmyCustomType }; 

を行う機密レベル変更、私はmyCustomTypeを作成するときに、私のアプリは、すべての刺し傷の小道具のためにメモリを使用しないようなものを作成した場合プロット値を1つだけ設定します

+0

あなたは何を得るのですかからmyCustomType mt = new myCustomType(); Debug.WriteLine(mt.prop1); ? – Paparazzi

答えて

2

空のgetでプロパティを作成すると、セット;定義クラスプロパティは、次のように基本的に等しい:

public class myCustomType { 
    private string _prop1; 
    private string _prop2; 
    private string _prop3; 
    private string _prop4; 

    public string prop1 { 
    get { return _prop1; } 
    set { _prop1 = value; } 
    } 
    public string prop1 { 
    get { return _prop1; } 
    set { _prop1 = value; } 
    } 
    public string prop3 { 
    get { return _prop; } 
    set { _prop1 = value; } 
    } 
    public string prop4 { 
    get { return _prop4; } 
    set { _prop4 = value; } 
    } 
} 

バッキング文字列フィールド(_prop1は - _prop4)(C#でのすべての参照型であるように)ヌルに初期化されます。したがって、そのクラスのデータ部分は、最初はすべてnullを指している文字列への4つの "ポインタ"を含みます(カスタム型のすべてのインスタンスに対して4 * 32ビットまたは4 * 64ビットまたは16/32バイトのアーキテクチャに応じて) 。

あなたが作成する各文字列は、それ自身のメモリを使用します(文字列インターンを検索したい場合もあります)。しかし、文字列データを格納するカスタムタイプのメモリは割り当てられません「心配し直す。

1

myCustomTypeの各インスタンスは、4つの文字列の参照に加えてthe usual per instance overheadが含まれています。4つの文字列これらのインスタンスポイントは、同様のメモリを取る場合。

関連する問題