2011-02-07 4 views
41

定数GuidをC#で宣言できますか?C#で定数Guidを宣言するには?

私はstatic readonly Guidと宣言できますが、const Guidと書くことができる構文はありますか?

+5

静的な読み取り専用Guidの何が問題なのですか? – Pedro

+1

それを行う唯一の方法なら何もありません。 – smartcaveman

+1

@ Pedroでは、コンパイル時にconstが評価され、実行時にスタティックが評価されます。 –

答えて

45

No. const修飾子は、プリミティブ型(bool、int、float、double、long、decimal、short、byte)と文字列にのみ適用されます。基本的にはリテラルとして宣言できます。

+6

これは実際には逆の方法で定義されています。コンパイル時のリテラル値に 'const'を使うことができます。 C#は実際には "プリミティブ型"という用語を定義していません。それは技術的にただのスラングだ。他の言語では、実際には「プリミティブ型」という用語を定義し、そのような型の固定リストを使用します。実際、 'Guid'にはコンパイル時のリテラルが1つあり、それは' default(Guid) 'です。それはGuidのための唯一のコンパイル時のリテラルです。 – Servy

18

あなたがそれを必要とするたびに解析されるようにそれを行うことができることをやるように見えることはできませんが:

const string _myGuidStr = "e6b86ea3-6479-48a2-b8d4-54bd6cbbdbc5"; 

しかし、私が最初に発生した、それは単に私のものとしてのguid上記を使用していませんそれで私は上記のこの特定のGUIDの所有権を主張します!しかし、私は寛大です - 代わりにこの1つを使用してください(私はそれが私に戻って話すのが好きではありませんが、それはそれが口を閉じたままにして全体的に素敵なガイドです):284c694d - d9cc - 446b - 9701 - b391876c8394

+8

+1、あなたのGUIDは私にも戻って話しましたが。 –

+7

あなたはGuidsを販売することを検討する必要があります... –

+5

@ZarShardan彼らは一種です! –

32

宣言それはstatic readonly Guidいうよりconst Guid

+0

最終的な結果を変更せずに代替案を提供する唯一のものであるため、これは最善の答えだと信じています。静的な読み取り専用はintellisenseを含むconstの同じ方法で使うことができます – Raffaeu

+1

@Raffaeu:私から+ 1)、しかし技術的には、それは質問に答えることさえしません(「C#で一定のGuidを宣言することはできますか?」)。これは回避策を提供しますが、 'static readonly'が' const'とどのように異なっているのか、そして他のものの代わりに1つを使用することの意味については説明しません。したがって、「最善の答え」がどのように見えるかは遠いです。 – Heinzi

3

ように私はこのようにそれをやっている:

public static class RecordTypeIds 
{ 
    public const string USERS_TYPEID = "5C60F693-BEF5-E011-A485-80EE7300C695"; 
    public static Guid Users { get { return new Guid(EntityTypeIds.USERS_TYPEID); } } 
} 
+7

アクセスごとに新しいGUIDを作成するプロパティではなく、読み取り専用フィールドでわずかに優れたパフォーマンスが得られます – smartcaveman

+1

私はあなたの答えがマイナスのgetプロパティを好むのが好きです。私はsmartcavemanに同意します...ただ公的な静的な読み取り専用Guidにしてください。 –

+1

私がこれが好きな唯一の理由は、switch文で文字列を使用できるようにすることです。他のすべての場所私は静的な読み取り専用Guidを使用します。 –

19
public static readonly Guid Users = new Guid("5C60F693-BEF5-E011-A485-80EE7300C695"); 

、それはそれです。

+3

これは定数ではなく、読み込み専用です – Darius

+1

これは適切な選択肢です。 –

+3

コンパイル時に評価されるものが必要な場合は、適切ではありません。 –

関連する問題