I use C# in my development environment but I don't consider myself a c# programmer. Also, the rate of learning for a programmer varies between people so number of years is not a good metric to determine skill. But, other than direct testing and showing past work, there aren't any really good metrics to determine skill so number of years is shown on job descriptions.
Typically, less than 3 years is considered a junior programmer. 5 years is considered intermediate and more than 7 years is considered senior. But those are simply job descriptions and not actual determination of the skill required for those jobs.
Competitive... I don't exactly understand what this mean other than guarantee that you will beat out other candidates but that doesn't have anything to do with years of experience. Typically, you should have enough on the resume to get past the first rounds and land you a face-to-face interview then you can show examples of your work and blow them away with your knowledge and expertise.
So, in effort to get past the first rounds, years of experience help a lot on the resume and so does education and previous places you've worked (especially if they are prestigious). But that won't make you competitive until you can prove it.