C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 列挙型と同名のプロパティの命名規則について


(過去ログ 62 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■36135 / inTopicNo.1)  列挙型と同名のプロパティの命名規則について
  
□投稿者/ ぐらたん (1回)-(2009/05/21(Thu) 17:05:57)

分類:[C#] 

こんにちは。ぐらたんと申します。

C#のプロパティの命名で、悩んでいます。

以下のように、
列挙型と同名のプロパティを定義すると
エラーとなってしまいます。

class CTest
{
// 列挙型
public enum Type
{
A,
B,
C,
}

// フィールド
private Type m_type;

// プロパティ
public Type Type
{
get { return m_type; }
set { m_type = value; }
}
}

こういった場合は、
どのような名前をつけるのが
一般的なのでしょうか?

利用側は、

CTest ctest;
ctest.Type = CTest.Type.A;

のような感じです。

今は、列挙型を「Types」とするのが良いのかな、
と思っている状態です。
引用返信 編集キー/
■36136 / inTopicNo.2)  Re[1]: 列挙型と同名のプロパティの命名規則について
□投稿者/ Hongliang (386回)-(2009/05/21(Thu) 17:28:50)
2009/05/21(Thu) 17:31:05 編集(投稿者)
private な列挙型でない限り、他の型内で型定義するのはやめたほうがいいでしょう。

// 列挙型
public enum HogeType
{
    A,
    B,
    C,
}

class CTest
{
    // プロパティ
    public HogeType HogeType { get; set; }
}

こうすれば問題ありません。

> 今は、列挙型を「Types」とするのが良いのかな、
> と思っている状態です。
複数形は組み合わせ可能な(Flags 属性のついた)列挙型に使用します。

引用返信 編集キー/
■36151 / inTopicNo.3)  Re[2]: 列挙型と同名のプロパティの命名規則について
□投稿者/ ぐらたん (2回)-(2009/05/22(Fri) 11:30:02)
Hongliang さん、ありがとうございます!

無事に解決できました。


> private な列挙型でない限り、他の型内で型定義するのはやめたほうがいいでしょう。

この点については、どうしてだろう?と思いましたが
原典(どの本か謎ですが)をまだ良く読めてないので
もっと勉強しておきます。

よそのリファレンス等も、そうなっていますね。
(publicな列挙型はclass内に定義しない)


> 複数形は組み合わせ可能な(Flags 属性のついた)列挙型に使用します。

これは全くその通りですね。意味も分かりやすいです。


以上です。
わかりやすい回答をありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -