C# yapıcı zincirleme? (Ne yapmalı?)
Bu sözde süper basit bir soru olduğunu biliyorum, ama biraz zaman kavramı ile şimdi mücadele ediyorum. Benim soru, nasıl c kurucular zinciri musunuz.? İlk OOP dersinde ben sadece öğreniyorum. Yapıcı nasıl çalışır ya da nasıl uygulanacağı, hatta sadece zincirleme olmadan kurucular yapmamaktan daha iyidir anlamıyorum.
Bir açıklama ile bazı örnekler memnun olurum.
Nasıl onları nasıl zincir? Gider iki ile biliyorum:
public SomeClass this: {0}
public SomeClass
{
someVariable = 0
}
Ama nasıl üç, dört ve benzeri ile yapıyorsun?
Yine, bu bir acemi bir soru olduğunu biliyorum, ama bunu anlamakta güçlük çekiyorum ve neden bilmiyorum.
CEVAP
Standart sözdizimi (bir yöntem gibi this
kullanarak) aşırı almak için kullanıniçindesınıfı:
class Foo {
private int id;
private string name;
public Foo() : this(0, "") {
}
public Foo(int id, string name) {
this.id = id;
this.name = name;
}
public Foo(int id) : this(id, "") {
}
public Foo(string name) : this(0, name) {
}
}
sonra:
Foo a = new Foo(), b = new Foo(123), c = new Foo("abc"), d = new Foo(456,"def");
Not ayrıca:
- zincir base-type
base(...)
kullanarak kurucular için - her kurucu ekstra kod koyabilirsiniz
- varsayılan eğer bir şey belirtmek musun eğer mi ()
base()
"Neden?":?
- azaltma (her zaman iyi bir şey) kodu
gereklivarsayılan olmayan bir taban kurucusunu çağırmak için, örneğin:
SomeBaseType(int id) : base(id) {...}
Ayrıca benzer bir şekilde nesne başlatıcılar, gerçi kullanabilirsiniz (bir şey yazmaya gerek kalmadan):
SomeType x = new SomeType(), y = new SomeType { Key = "abc" },
z = new SomeType { DoB = DateTime.Today };
Zincirleme birden fazla Hadoop MapRedu...
Yıkıcı yapıcı atma sonra aradı...
Automapper - nasıl göster özelliği bel...
Yapıcı işlevi, vs Fabrika fonksiyonlar...
Tam olarak nasıl ____özniteliği((yapıc...