2016-03-26 22 views
1

Varsayılan yapıcı atlandığında türün veri üyeleri varsayılan değerlerini nasıl alırlar ve varsayılan değerler verildiyse, her zaman varsayılan kurucunun kullanımı nedir?Varsayılan yapıcı olmadan varsayılan değerler

class Program 
{ 
    static void Main(string[] args) 
    { 
     Person person = new Person("SomeName"); 
     Console.WriteLine(person.Age); 
     Console.WriteLine(person.FamileName == null); 
    } 
} 

class Person 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public string FamileName { get; set; } 

    public Person(string name) 
    { 
     Name = name; 
    } 
} 

Düzenleme: Bu benim okuyordum bir kitaptan olduğunu ve varsayılan yapıcı veri üyelere varsayılan değerlerini veren sorumlu olduğunu düşünerek beni ne var ama ben yanlış anladım gibi görünüyor ve öyle Gerekirse bu değerleri değiştirmemin bir yolu, eğer yanılıyorsam lütfen beni düzeltin.

Her C# sınıfında, gerektiğinde yeniden tanımlayabileceğiniz bir “freebie” varsayılan kurucusu bulunur. Tanım olarak, bir varsayılan kurucu asla argüman almaz. belleğe yeni nesne ayırmak sonra varsayılan yapıcı Eğer kurucuyu kullanarak farklı belirlenmemişse etmezse sınıfın tüm alan veri

+0

EʜsᴀɴSᴀᴊᴊᴀᴅ 0 'için minimum bir değer değil @ int – Eser

cevap

0

Nesne alanları her zaman varsayılan değerler ile başlatılır uygun bir varsayılan değere ayarlanır sağlar veya alan başlatması (aynı özellik için de geçerlidir).

Varsayılan değer her zamanki değer, tüm bitlerin sıfıra ayarlanmasına karşılık gelir (referans türleri için null, sayısal türler için 0).

Sen kurucuyu kullanarak başka bir değer ayarlayabilirsiniz:

public Person() 
{ 
    Name = "Sebastian"; 
} 

veya başlatıcı:

public string Name { get; set; } = "Sebastian"; 
0

C# 'varsayılan değer atayabilirsiniz.

class Person 
{ 
    public string Name { get; set; } ="Someone"; 
    public int Age { get; set; } 
    public string FamileName { get; set; } 
} 

sen bunu yapabilirsin nesnenin başlatma değerleri atamak isterseniz

: Sadece değerleri veya varsayılan değer atamak gerekiyorsa

class Program 
{ 
    static void Main(string[] args) 
    { 
     Person person = new Person { Name= "SomeOne"; Age=16; }; 
     Console.WriteLine(person.Age); 
     Console.WriteLine(person.FamileName == null); 
    } 
} 

, yapıcıyı gerekmez. Yukarıda belirtilen yöntemlerde yapabilirsiniz. Normalde bazı ek görevler yapmam gerektiğinde kurucuları kullanıyorum. veritabanı bağlantısı, vb diğer nesne ve kurma

Bağlantı: Sınıfınızdaki https://msdn.microsoft.com/en-us/library/bb397680.aspx

0

üye varsayılan değerlerle başlatılır. Referans türleri için, bu null ve değer türleri için varsayılan değerdir. Bir nesnenin olmak üyeler hakkında özel bir şey yok - onlar bir işlev ortasında olsaydı onlar olurdu aynı değerleri verilmiştir: Varsayılan yapıcı gelince

public void Foo() 
{ 
    string name; // null 
    int age; // 0 
    bool isChild; // false 
} 

, bu emin veri türlerini yapmak için güzel bir yer Güvende Örneğin, boş olmayan bir değer ölçüsünde daktilo properites başlatmak isteyebilirsiniz:

class Widget 
{ 
    public string Name { get; set; } 
    public Widget() 
    { 
     Name = string.Empty; // this way someone can call Widget.Name safely 
    } 
} 

İlgili bir, ayrıca görmelisiniz: How do you give a C# Auto-Property a default value?

İlgili konular