2009-10-09 10 views

cevap

11

Açıkça bir adla bildirilmiş olan bir tür. Örneğin, bildirdiğiniz sınıf veya yapı bir adlandırılmış türdür.

Ayrıca, adsız olarak bildirilen anonim türler de vardır ve derleyici, geliştiriciye erişilemeyen bu türe bir ad atar.

Farklı türlerde types in C#'dan daha fazlasını okuyabilirsiniz.

3

Bu, anonim bir türe sahip olanların aksine, açıkça yazılmış değişkenleri için geçerlidir. Anonim olmayan bir şey, adlandırılmış bir türüdür. ile tanıtılan

Net 3.0, anonim tipleri bu amaçla bir açık isimli türünü tanımlamak için kalmadan salt okunur özellikler kümesini içeren nesneleri oluşturmak için uygun bir yol temin (Bence). Anonim türleri uygulanması da (nesnenin özelliklerinin tiplemesi için) type inference kullanılmasını gerektirir rağmen

, anonim türleri var kelime programcı boşaltır sayedeImplicitly Typed Local Variables ile karıştırılmamalıdır değildir Açıkça bir değişken tipinin belirtilmesi, ancak bir türün derleyici tarafından etkin bir şekilde sunulması. (En gizli olarak yazılan değişkenler anonim tip değildir ve bu nedenle adlandırılmış bir türdür. Adlandırma yapan yalnızca derleyici).

+0

Bu yanlış. Yazım tipi ve anonim tipler ilişkili değildir. Yazım türü, bazı durumlarda genel parametreleri veya var anahtar kelimesini hariç tutmak için kullanılabilir. Anonim tipler, anında oluşturulan adsız türlerdir. – recursive

+0

@recursive Teşekkürler! Bunu okudum ve yanlış gittiğimi anladım. Tip Çıkarım genellikle anonim tiplerde kullanılır, ancak, iki kavram gerçekten tamamen ayrıdır. Cevabımı buna göre düzeltirim (ya da tamamen öldürürüm ...) – mjv

+1

Cool. İndirilen not kaldırıldı. – recursive

2

Annonymous Type olmayan herhangi bir tür, "Adlandırılmış Tür" olur.

+1

Tanımınıza göre, iki boyutlu dizi tamsayıları, adlandırılmış bir türüdür. Bu gerçekten mantıklı mı? Eğer öyleyse, adı ne? –

+1

@Eric Bu soru için teşekkür ederiz.Eksik veya yanlış anlaşılan bir şey olduğunu düşünüyorsanız lütfen bu tartışmaya daha fazla ışık atın. MJV'nin yukarıdaki yorumundan – csharpbaby

2

Adlandırılmış bir tür oluşturduğunuz ve ad verdiğiniz açıkça tanımlanmış herhangi bir tür (struct, class, vb.).

ör .: Bu durumda

public class Foo 
{ 
    public string Bar{ get; set; } 
} 

Foo adlandırılmış türüdür.

tipik anında oluşturulur anonim tür aksine budur: Sadece yeni bir nesne oluşturulur

var MyFoo = new { Bar = "some text" }; 

, MyFoo aradı. Açıkça bir tür adı vermedik, ancak ona "bir metin" değeriyle birlikte bir String özelliği olan Bar'ı verdik.

+0

, 'Var MyFoo' ifadesi dolaylı olarak yazılan değişken anlamına gelir. Bahsettiğin gibi bu anonim tip nasıl? Teşekkürler – csharpbaby