2013-02-22 243 views
0

我開始一個新的項目,我有一些問題試圖實現一些命名約定。c#命名約定

我曾經使用以大寫和單數開頭的類,如Car或User,以及我的變量以小寫開頭,所以如果我需要聲明一個具有Car和User類型變量的類,我會這樣做像這樣:

public Car car; 
private User user; 

現在我試着去使用一些屬性和我看到他們也應該PascalCase,至極的意思是,如果我需要聲明同樣的例子我應該是:

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

你都可以看到問題會在這裏出現,或者你沒有看到它問題?

那麼我該怎麼做?我在這裏錯過了什麼?

+5

假設我看不出有什麼問題。這是什麼? – Pete 2013-02-22 14:45:39

+0

它是公共和私人的小p – manojlds 2013-02-22 14:46:16

+0

皮特我認爲它是一個問題,因爲如果我在我的課堂上有一些靜態方法,並需要訪問他們在同一類,我已經有一個實例,我不知道如何去訪問一個或另一個,但也許我做錯了不是命名約定,但我做了什麼之後。 – 2013-02-22 14:50:48

回答

9

C#的命名約定建議的一切,是公衆以及類,接口等,開始以一個大寫字母。其餘的應該從小寫開始。

有沒有問題:

private User User { get; set; } 

...因爲每個名字(單詞)的位置定義什麼是什麼。 英語的工作方式也是一樣。 例如:「我愛愛情」。 (代詞,動詞,名詞)

+1

+1對於使用'私人用戶用戶{get;組; }'但是,值得注意的是,在C#中公共成員,含有多個單詞**的類型和名稱空間的一般推薦命名約定是PascalCase。 http://msdn.microsoft.com/en-gb/library/vstudio/ms229043(v=vs.100).aspx – Richard 2013-02-22 15:21:53

+0

正確的感謝 - 爲此添加 – Holly 2013-02-24 20:02:09

+0

謝謝,它也適用於Unity C# – Unreality 2015-11-05 02:16:09

1

那裏沒有問題。

因爲在您使用該類的上下文中,不能誤導屬性,反之亦然。

編輯:好吧,我要去假設你有UserClass的這樣的carclass內:

public class Car 
{ 
    private class User 
    { 

    } 

    private User User 
    { 
     get; 
     set; 
    } 
} 

這的確會產生問題。移出你的用戶,問題就解決了。

public class Car 
{ 

    private User User 
    { 
     get; 
     set; 
    } 
} 

public class User 
{ 

} 
+0

您的編輯是不正確的,我現在可以看到它不是一個問題,但我沒有這樣寫,謝謝:) – 2013-02-22 15:06:56

+1

對不起,我沒有發現你真正的問題,然後:)無論如何,它很好的解決了! – Evelie 2013-02-22 15:08:40

1

這裏沒有問題;正如@NDJ建議,如果你感覺不舒服,你可以應用上下文來爲屬性添加額外的前綴;但這通常不會增加上下文的附加含義。

作爲一般的Microsoft風格指南,鼓勵使用Pascal Case來表示屬性。

有關資本更完整指南請參閱以下MSDN article

1

除了@Evelie指出的內部類問題,你不應該有任何命名與該類型相同的屬性的問題 - 事實上這並不罕見。 .NET在整個地方都有public Color Color的屬性。

如下面的程序說明了編譯器可以實例調用和靜態調用之間distinguich:

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"); 
    } 
} 
4

你碰到被稱爲Color Color什麼問題,因爲最常見的方式,作物起來是「我需要名爲ColorColor」的房產。 C#專門設計用於優雅地管理Color Color的情況。

有關詳細信息,請參閱C#4規範中的第7.6.4.1節「相同的簡單名稱和類型名稱」。

Color Color的規則有點複雜(相信我,他們不會讓編譯器實現者的生活變得更容易!),他們可能會導致一些有趣的情況。如果這個問題的利益,你,你應該閱讀就可以了我的文章:

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

+0

謝謝埃裏克,我會閱讀它。 – 2013-02-22 15:33:46

+0

不錯的文章埃裏克,再次感謝我可以看到使用相同名稱的含義。 – 2013-02-22 15:44:01