2016-03-26 12 views
1

デフォルトのコンストラクタが省略され、デフォルトのコンストラクタがデフォルトで使用されている場合、その型のデータメンバはどのようにデフォルト値を取得しますか?デフォルトのコンストラクタを持たないデフォルト値

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; 
    } 
} 

編集: これは私が読んでいる本からで、デフォルトコンストラクタは、データメンバーにそれらのデフォルト値を与えるために責任があると考えて私を得たものですが、私はそれが間違って持っているようだと、それはですもし私が必要ならば私がこれらの値を修正するための唯一の方法は、私が間違っている場合私を修正してください。

すべてのC#クラスには、必要に応じて再定義できる「フリービー」デフォルトのコンストラクタが用意されています。定義によって、 デフォルトのコンストラクタは引数を取らない。メモリに新しいオブジェクトを割り当てた後、デフォルト コンストラクタでは、コンストラクタを使用して、異なる指定しない場合は、クラスのすべてのフィールドのデータが

+0

EʜsᴀɴSᴀᴊᴊᴀᴅ0は 'の最小値ではありません@ int 'である。 – Eser

答えて

0

オブジェクトのフィールドは、常にデフォルト値で初期化され、適切なデフォルト値に設定されていることを保証しますフィールドの初期化(プロパティでも同じです)。

通常、デフォルト値はすべて0に設定されたすべてのビットに対応します(参照型の場合はnull、数値型の場合は0)。

あなたは、コンストラクタを使用して他の値を設定することができます:あなたは、デフォルト値を割り当てることができますC#では

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

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

または初期化子を。

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

あなたはこれを行うことができ、オブジェクトの初期化で値を割り当てる場合:

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

あなたが唯一の値またはデフォルト値を割り当てる必要がある場合は、コンストラクタは必要ありません。あなたは上記の言及方法でそれを行うことができます。 私は通常、いくつかの追加タスクを実行する必要があるときにコンストラクタを使用します。データベース接続など他のオブジェクトとを設定

リンク:あなたのクラスでhttps://msdn.microsoft.com/en-us/library/bb397680.aspx

0

メンバーはデフォルト値で初期化されます。参照型の場合はnull、値型の場合は既定値です。オブジェクトであることのメンバーは特別なものは何もありません - それは、彼らが関数の途中にあった場合、彼らは持っているのと同じ値です:デフォルトコンストラクタについては

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

、それは確かにあなたのデータ型を作るために素敵な場所です安全です。たとえば、あなたがnull以外の値に任意の参照に型指定されたproperitesを初期化したい場合があります:

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

関連ノートで、あなたも表示されるはずです。How do you give a C# Auto-Property a default value?

関連する問題