2013-03-27 20 views
7

Bir kurucunun her zaman burada sahip olduğumdan en az bir değer ile çağrılmasının daha zarif bir yolu var mı? Hiçbir değer sağlanmazsa, derleyici hatası istediğim gibi yapmıştım. açıklamalara dayanarakC# gereken minimum bir değer ile paragraflar

, bu kod değişti DÜZENLEME

public class MyClass 
{ 
    private readonly List<string> _things = new List<string>(); 
    public string[] Things { get { return _things.ToArray(); } } 

    public MyClass(string thing, params string[] things) 
    { 
     _things.Add(thing); 
     _things.AddRange(things); 
    } 
} 

... çabasıyla önce kodunu düzenlemeyle ilgili

public class Hypermedia : Attribute 
{ 
    private readonly Rel[] _relations; 
    public IEnumerable<Rel> Relations { get { return _relations; } } 

    public Hypermedia(Rel relation, params Rel[] relations) 
    { 
     var list = new List<Rel> {relation}; 
     list.AddRange(relations); 
     _relations = list.ToArray(); 
    } 
} 

Özür yapmaya çalıştığım şeyi sakla. Doğrudan kod düzenleyicimden yapıştırmak daha kolay!

+0

bir uygulama detaylı olarak yapılacak diğer tek _tiny_ bit olası yeniden boyutlandırma önlemek için toplam uzunluğuna yapıcısında '_things List ' örneğini için: '_things = Yeni listesi (things.Length + 1);' Ama bu sadece küçük bir optimizasyon (büyük olasılıkla fark yoktur). İmza değişikliklerine gelince, sanmıyorum. (Ancak bu imza, diziyi çalışma zamanında oluşturup bunu "paramlar" ı derleme zamanında kullanıp atmak istemezse acı vericidir, ilk dizi öğesini ayırıp bir bütün oluşturmalısınız. parametrelerin geri kalanı için ikinci dizi) –

+3

Arayan ''null'' 'n''' olarak geçebilirdi' –

+0

@Tim - Ben sadece paramız var mıyım, zorlamak için" şey "parametresini ekliyorum Parametre sağlanmadığında derleyici hatası. –

cevap

İlgili konular