2013-05-30 18 views
5

Hangi yöntemi tercih etmeliyim ve neden? Gerçek bir fark var mı?Soyut özellikler veya temel kurucu parametreleri?

Özet özelliği:

abstract class Table 
{ 
    public abstract string Title { get; } 
} 

class InfoTable : Table 
{ 
    public override string Title 
    { 
     get { return "Info"; } 
    } 
} 

veya baz sınıf yapıcı parametresi:

bunlar sınıf dururken
abstract class Table 
{ 
    public string Title { get; private set; } 

    public Table(string title) 
    { 
     Title = title; 
    } 
} 

class InfoTable : Table 
{ 
    public InfoTable() : base("Info") { } 
} 
+0

ne yazık ki bu soru olacak @FabioMarcolini Nasıl ifadeleri değiştirmeye –

+0

hızlı kapatılacak, insanlar burada da kabul edilmez konusunda tartıştılar yapmak soru bu örnekte olduğu kadar statik bir şey olmadığını söylüyorlar? Cevabına ihtiyacım var! – astef

+0

Bu sorunun gerçek bir cevabı yok, bu sadece –

cevap

1

iyi cepten uygulama değildir sadece veri sınıfıdır. Bir alt sınıfta bu durumda bu örnekte

class InfoTable : Table 
{ 
    private string id; 
    private string name; 
    public override string Title 
    { 
     get { return name+id; } 
    } 
} 

gibi olmayan bir harcoded başlığı olabilir ama yine de

Tamam diyelim iyidir ikisinden hangisi bağlı olabilir çünkü eğer Neyse ben ilk türü tercih sınıf daha sonra

private DynamicTitleProvider provider; 
public override string Title 
    { 
     get { return provider.GetTitle(); } 
    } 
+0

public InfoTable (dize adı, dize kimliği): taban (ad + kimlik) {} – astef