1

新しいプロジェクトを開始しましたが、いくつかの命名規則を実装しようとして問題が発生しました。

以前は、CarやUserのように大文字と単数で始まるクラスと、小文字で始まる変数を使用していたので、CarとUserタイプの変数を持つクラスを宣言する必要がある場合は、次のようにします。

public Car car;
private User user;

今、私はいくつかのプロパティを使用しようとしていますが、私が見るように、それらもPascalCaseである必要があります。つまり、同じ例を宣言する必要がある場合は、次のようになります。

public Car Car { get; set; }
private User User { get; set; }

そして、あなたはすべてここで問題が何であるかを見ることができますか、それともあなたはそれを問題として見ませんか?

だから私は何をすべきですか?私はここで何が欠けていますか?

4

6 に答える 6

12

C#の命名規則では、クラス、インターフェイスなど、パブリックであるすべてのものを大文字で始めることを推奨しています。残りは小文字から始める必要があります。

問題はありません:

private User User { get; set; }

...各名前(単語)の位置が何であるかを定義するため。英語も同じように機能します。例:「私は愛が大好きです。」(代名詞、動詞、名詞)

于 2013-02-22T14:55:57.040 に答える
4

あなたが遭遇したものはColor Color問題と呼ばれます、なぜならそれが現れる最も一般的な方法は「私は」と呼ばれるColorタイプのと呼ばれるプロパティが必要だからColorです。Color ColorC#は、状況をエレガントに管理するように特別に設計されています。

詳細については、C#4仕様のセクション7.6.4.1「同一の単純な名前と型名」を参照してください。

状況のルールColor Colorは少し複雑で(私を信じてください、コンパイラの実装者の生活を楽にすることはありません!)、いくつかの興味深いコーナーケースにつながる可能性があります。この主題があなたに興味があるなら、あなたはそれに関する私の記事を読むべきです:

http://blogs.msdn.com/b/ericlippert/archive/2009/07/06/color-color.aspx

于 2013-02-22T15:32:42.900 に答える
2

多くの場合、コンテキストは特定の名前を持っていることを意味すると思います-たとえば、CarcustomersCarなど。多くの人は名前/タイプが同じであることに問題はありません-このリンクを参照してください: プロパティが持っている必要がありますそのタイプと同じ名前?

一般的な命名規則については、MSに従うことは悪いスタートではありません-http://msdn.microsoft.com/en-gb/library/vstudio/ms229045(v= vs.100 ).aspx

于 2013-02-22T14:47:25.887 に答える
1

そこには問題はありません。

クラスを使用するコンテキストでは、プロパティと間違えられることはなく、その逆もあり得ないためです。

編集:わかりました、私はあなたがこのようなカークラスの中にユーザークラスを持っていると仮定するつもりです:

public class Car
{
    private class User
    {

    }

    private User User
    {
        get;
        set;
    }
}

それは確かに問題を引き起こすでしょう。ユーザーを移動すると、問題は解決します。

public class Car
{

    private User User
    {
        get;
        set;
    }
}

public class User
{

}
于 2013-02-22T14:46:39.037 に答える
1

ここでは問題はありません。@NDJが提案したように、快適でない場合は、コンテキストを適用してプロパティにプレフィックスを追加できます。しかし、これは通常、コンテキストに追加の意味を追加しません。

一般的なMicrosoftスタイルガイドでは、プロパティにPascalケースを使用することを推奨しています。

キャピタライゼーションに関するより完全なガイドについては、次のMSDNの記事を参照してください。

于 2013-02-22T14:52:11.120 に答える
1

@Evelieが指摘した内部クラスの問題を除けば、プロパティにタイプと同じ名前を付けることに問題はないはずです。実際、これは珍しいことではありません。.NETにはpublic Color Color至る所にプロパティがあります。

次のプログラムが示すように、コンパイラはインスタンス呼び出しと静的呼び出しを区別できます。

void Main()
{
    Car c = new Car();
    c.Test();
}

public class Car
{

    public Car()
    {
        User = new User();
    }

    public void Test()
    {
        User.Static();  // calls static method
        User.Instance();   // implies this.User
    }

    public User User { get; set; }
}
// Define other methods and classes here
public class User
{
   public static void Static()
    {
        Console.WriteLine("Static");
    }

    public void Instance()
    {
        Console.WriteLine("Instance");
    }
}
于 2013-02-22T15:05:11.453 に答える