Should a property have the same name as its type?

.net, c#, naming-conventions

Solution

It's fine. The canonical example here is

public Background {
    public Color Color { get; set; }
}

There are rare issues (corner cases) that come up here, but not enough to warrant avoiding this device. Frankly, I find this device quite useful. I would not enjoy not being able to do the following:

class Ticker { ... }


public StockQuote {
    public Ticker Ticker { get; set; }
}

I don't want to have to say `Ticker StockTicker` or `Ticker ThisTicker` etc.

Problem

I've sometimes seen code written like this : ``` public class B1 { } public class B2 { private B1 b1; public B1 B1 { get { return b1; } set { b1 = value; } } } ``` i.e. class B2 has a property named "B1", which is also of type "B1". My gut instinct tells me this is not a good idea, but are there any technical reasons why you should avoid giving a property the same name as its class ? (I'm using .net 2.0, in case that matters).

Original source