スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

constとstatic readonlyの違い(補足)。

constとstatic readonlyの違い。の補足。

・constは、メソッド内にも定義できる。staticはできない。
 constは埋め込みだからね。

・staticな変数は、基本、上からロードされていく。
 static変数は、定義クラスが参照された時に、先頭から順にロードされていく。
namesapce TawamureDays {
class Program {

/// <summary>定数A+B</summary>
static readonly string CONSTANT_A_AND_B = CONSTANT_A + "_B";

/// <summary>定数A</summary>
static readonly string CONSTANT_A = "A";

static void Main(string[] args) {
Console.WriteLine(CONSTANT_A);
Console.WriteLine(CONSTANT_A_AND_B);
Console.ReadKey(true);
return;
}
}
}

この実行結果は、

A
_B

となる。順序を逆にして定義し直す。
namesapce TawamureDays {
class Program {

/// <summary>定数A</summary>
static readonly string CONSTANT_A = "A";

/// <summary>定数A+B</summary>
static readonly string CONSTANT_A_AND_B = CONSTANT_A + "_B";

static void Main(string[] args) {
Console.WriteLine(CONSTANT_A);
Console.WriteLine(CONSTANT_A_AND_B);
Console.ReadKey(true);
return;
}
}
}

この実行結果は、

A
A_B

となる。
では、partialにするとどうなるのだろう?と思ったので試してみる事にした。
・同じファイル内でpartialを作った時
→上(ファイルの先頭)から順番にロードされていく。

・複数のファイルでpartialクラスを作った時
→ファイルの追加、ファイル名の変更が古い順にロードしていく。
 だと思う。
※ConstClass.Partial1.cs
using System;

namespace TawamureDays {

partial class ConstClass {

public static readonly string PARTIAL1 = "PARTIAL1";
}
}


※ConstClass.Partial2.cs
using System;

namespace TawamureDays {

partial class ConstClass {

public static readonly string PARTIAL2 = "PARTIAL2";
}
}


※ConstClass.Partial3.cs
using System;

namespace TawamureDays {

partial class ConstClass {

public static readonly string PARTIAL3 = "PARTIAL3";
}
}

1,2,3の順に追加して、ビルド→実行→ILSpyでデコンパイルした結果が↓。
20130110_1

このConstClass.Partial1.csをConstClass.Partial4.csに変更したところの結果が↓
20130110_2
・中身をいくら変えても、ロードの順番は変わらない。ファイル名の変更や追加によって切り替わるらしい。
・ファイルをプロジェクトから除外し、ビルド。再度追加でも順番は変わる(追加しなおしたファイルが一番最後にロードされる感じになる)。
うん。すごくわかりづらい。constはともかく、static変数の定義、特に同クラス内の他のstatic変数を参照するような時には気をつける必要があるって事か。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: C# | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。