Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, C# dilinde türlerin nasıl oluşturulacağı öğretildi. Küçük miktarlarda kod yazar, sonra bu kodu derleyip çalıştırırsınız. Öğretici, C# dilindeki farklı türleri keşfeden bir dizi ders içerir. Bu dersler size C# dilinin temellerini öğretir.
İpucu
Programlamada yeni misiniz? Her bölümde sıralı olarak çalışın: tanımlama grupları, kayıtlar ve ardından yapılar ve sınıflar. Başka bir dilden mi geliyorsunuz? Sınıfları ve yapıları zaten biliyorsanız, sizin için yeni olabilecek tanımlama listelerine ve kayıt türlerine odaklanın.
Önceki öğreticiler metin ve sayılarla çalıştı. Dizeler ve sayılar basit türlerdir: Her biri tek bir değer depolar. Programlarınız büyüdükçe daha gelişmiş veri yapılarıyla çalışmanız gerekir. C# daha fazla alan, özellik veya davranışa sahip veri yapılarına ihtiyacınız olduğunda tanımlayabileceğiniz farklı tür türleri sağlar. Şimdi bu türleri keşfetmeye başlayalım.
Bu eğitimde, siz:
- Demet türlerini oluşturma ve işleme.
- Kayıt türleri oluşturun.
- Yapı, sınıf ve arabirim türleri hakkında bilgi edinin.
Önkoşullar
Aşağıdaki seçeneklerden birine sahip olmanız gerekir:
- GitHub Codespaces'ı kullanmak için bir GitHub hesabı. Henüz bir hesabınız yoksa GitHub.com'de ücretsiz bir hesap oluşturabilirsiniz.
- Aşağıdaki araçların yüklü olduğu bir bilgisayar:
Codespaces kullanmak için bir GitHub hesabınız olmalıdır. Henüz bir hesabınız yoksa GitHub.com'de ücretsiz bir hesap oluşturabilirsiniz.
Demetler
Öğretici ortamıyla bir GitHub Codespace başlatmak için , öğretici kod alanı deposuna bir tarayıcı penceresi açın. Yeşil Kod düğmesini ve Codespaces sekmesini seçin. Ardından bu ortamı kullanarak yeni bir Codespace oluşturmak için işareti seçin + . Bu serideki diğer öğreticileri tamamladıysanız, yeni bir tane oluşturmak yerine bu kod alanının açılmasını sağlayabilirsiniz.
Codespace'ınız yüklendiğinde, öğreticiler klasöründe tuples.cs adlı yeni bir dosya oluşturun.
Yeni dosyanızı açın.
Aşağıdaki kodu tuples.cs yazın veya kopyalayın:
var pt = (X: 1, Y: 2); var slope = (double)pt.Y / (double)pt.X; Console.WriteLine($"A line from the origin to the point {pt} has a slope of {slope}.");Tümleşik terminal penceresine aşağıdaki komutları yazarak programınızı çalıştırın:
cd tutorials dotnet tuples.csTuple'lar sabit uzunlukta, sıralı bir değer dizisidir. Bir tuple'ın her öğesi bir türe ve isteğe bağlı bir ada sahiptir.
İpucu
C# dilini (veya herhangi bir programlama dilini) keşfederken, kod yazarken hatalar yaparsınız. Derleyici bu hataları bulur ve size bildirir. Çıktı hata iletileri içerdiğinde, nelerin düzeltileceğini görmek için örnek koda ve kodunuze yakından bakın. Copilot'dan farklılıkları bulmasını veya hataları tespit etmesini de isteyebilirsiniz. Bu alıştırma, C# kodunun yapısını öğrenmenize yardımcı olur.
Önceki koddan sonra bir tuple üyesini değiştirmek için aşağıdaki kodu ekleyin:
pt.X = pt.X + 5; Console.WriteLine($"The point is now at {pt}.");Ayrıca, bir ifade kullanarak özgün kopyanın değiştirilmiş bir kopyası olan yeni bir
withtanımlama grubu da oluşturabilirsiniz. Var olan kodun arkasına aşağıdaki kodu ekleyin ve sonuçları görmek için terminal penceresine yazındotnet tuples.cs:var pt2 = pt with { Y = 10 }; Console.WriteLine($"The point 'pt2' is at {pt2}.");Tanımlama grubu
pt2,X(6) değerini veptiçerir, vept2.Y10'dur. Demetler yapısal türlerdir. Başka bir deyişle, demet türlerininstringveyaintgibi adları yoktur. Demet türü, arity olarak adlandırılan üye sayısı ve bu üyelerin türleriyle tanımlanır. Üye adları kolaylık sağlamak içindir. Üyelerin adları farklı olsa bile, aynı değere ve türlere sahip bir tanımlama grubu atayabilirsiniz.Önceden yazdığınız koddan sonra aşağıdaki kodu ekleyebilirsiniz:
var subscript = (A: 0, B: 0); subscript = pt; Console.WriteLine(subscript);Terminal penceresine yazarak
dotnet tuples.csdeneyin. Değişkeninsubscriptiki üyesi vardır ve her ikisi de tamsayıdır.subscripthemptaynı demet türünün örneklerini temsil eder: ikiintüye içeren bir demet.Demetler oluşturmak kolaydır: Parantez içine alınmış birden çok üye tanımlarsınız. Aşağıdaki bildirimlerin tümü, farklı aritelere ve üye türlerine sahip farklı dizileri tanımlar.
Yeni tanımlama grubu türleri oluşturmak için aşağıdaki kodu ekleyin:
var namedData = (Name: "Morning observation", Temp: 17, Wind: 4); var person = (FirstName: "", LastName: ""); var order = (Product: "guitar picks", style: "triangle", quantity: 500, UnitPrice: 0.10m);Terminal penceresine yeniden yazarak
dotnet tuples.csbu değişikliği deneyin.
Tuple'lar kolayca oluşturulsa da, özellikleri sınırlıdır. Tuple türlerinin isimleri yoktur, bu yüzden değer kümesine anlam yükleyemezsiniz. Demet türleri davranış ekleyemez. C# türü, türünüz davranışı tanımlarken oluşturabileceğiniz başka tür türlerine sahiptir.
İpucu
Daha fazla bilgi edinin: C# Fundamentals'ta tuple'ları ve diğer tür seçeneklerini keşfedin.
Kayıt türleri oluşturma
Aynı yapıda birden çok değer istediğinizde tanımlama kümeleri düzgün çalışır. Bunlar hafiftir ve bunları kullanırken tanımlayabilirsiniz. Programınız büyüdükçe, kodunuzun tamamında aynı tuple türünü kullandığınızı fark edebilirsiniz. Uygulamanız 2B grafik alanında çalışıyorsa, noktaları temsil eden tanımlama grupları yaygın olabilir. Bu deseni bulduğunuzda, bu değerleri depolayan ve daha fazla özellik sağlayan bir record tür bildirin.
Bir
recordtürünü tanımlamak ve birPoint'yi temsil etmek için aşağıdaki kodu ekleyin:public record Point(int X, int Y);Önceki kodu kaynak dosyanızın altına yerleştirin. Dosya tabanlı bir uygulamada,
recordgibi tür bildirimleri yürütülebilir deyimlerden sonra gelmelidir.Bildirimin önüne
recordaşağıdaki kodu ekleyin:Point pt3 = new Point(1, 1); var pt4 = pt3 with { Y = 10 }; Console.WriteLine($"The two points are {pt3} and {pt4}");"
recordbildirimi, değerleriPointveXsalt okunur özelliklerde saklayanYtürü için tek satırlık bir koddur." Bu türü kullandığınız her yerde adıPointkullanırsınız. gibiPointdüzgün adlandırılmış türler, türün nasıl kullanıldığı hakkında bilgi sağlar. Ek kod, var olan noktanın değiştirilmiş bir kopyası olan yeni bir nokta oluşturmak için ifadenin nasıl kullanılacağınıwithgösterir. Satırdapt4 = pt3 with { Y = 10 }, "pt4,pt3ile aynı değerlere sahiptir, ancakY'e 10 atanmıştır." Tek birwithifadesinde değiştirmek için istediğiniz sayıda özellik ekleyebilirsiniz.Yukarıdaki
recordbildirim, ile;biten tek bir kod satırıdır.recordbildirerek bir türe davranış ekleyebilirsiniz. Kayıt üyesi bir işlev veya daha fazla veri öğesi olabilir. Bir türün üyeleri, tür bildiriminde{ve}karakterleri arasındadır.;öğesini silin verecorddeklarasyonundan sonra aşağıdaki satırları ekleyin:{ public double Slope() => (double)Y / (double)X; }Aşağıdaki kodu
recordbildiriminin önüne,withifadesini içeren satırdan sonra ekleyin.double slopeResult = pt4.Slope(); Console.WriteLine($"The slope of {pt4} is {slopeResult}");Bu sürümü çalıştırmak için terminal penceresine yazın
dotnet tuples.cs.Bir ve
Xdeğerini temsil edenYresmiyet eklediniz. Adlandırılmış bir türü tanımlayan ve eğimi hesaplamak için bir üye ekleyen bir varlık haline getirdinizrecord. Türrecord, birrecord classiçin kısaltmadır:class, ek davranış içeren bir türdür.Pointtürünürecord structyapmak için değiştirebilirsiniz.public record struct Point(int X, int Y)A
record struct, tümstructtürlere eklenen ek davranışı içeren birrecordtürdür.Terminal penceresine yazarak
dotnet tuples.csbu sürümü deneyin.
Yapı, sınıf ve arabirim türleri
C# dilindeki tüm somut adlandırılmış türler, class veya struct türleri olarak tanımlanmıştır ve bu tanım record türlerini de içerir. A class bir başvuru türüdür. A struct bir değer türüdür. Değer türünün değişkenleri, örneğin içeriğini satır içi olarak bellekte depolar. Başka bir deyişle, bir record struct Point iki tamsayı depolar: X ve Y. Başvuru türünün değişkenleri, örneğin depolama alanına yönelik bir başvuruyu veya işaretçiyi depolar. Başka bir deyişle, record class Point, X ve Y değerlerini tutan bir bellek bloğuna başvuran bir referans depolar.
Pratikte bu fark, değer türlerinin atandığında kopyalanması anlamına gelir, ancak bir sınıf örneğinin kopyası başvurunun bir kopyasıdır. Kopyalanan başvuru, X ve Y için aynı depolama alanını paylaşan bir noktanın aynı örneğine başvurur.
Değiştirici, record derleyiciye sizin için birkaç üye yazmasını bildirir. Temel bilgiler bölümünde kayıt türleriyle ilgili makalede daha fazla bilgi edinebilirsiniz.
Bir record tür bildirdiğinizde, türünüzün eşitlik karşılaştırmaları, atama ve bu türe ait örnekleri kopyalama için varsayılan bir davranış kümesi kullanması gerektiğini bildirirsiniz. İlgili verileri depolamak, türünüzün birincil amacı olduğunda kayıtlar en iyi seçenektir. Daha fazla davranış ekledikçe struct değiştirici olmadan class veya record türlerini kullanmayı göz önünde bulundurun.
Daha karmaşık davranışlara ihtiyacınız olduğunda, ancak birincil sorumluluk değerleri depolamak olduğunda, struct türlerini değer türleri için kullanın. Kapsülleme, devralma ve polimorfizm gibi nesne odaklı deyimleri kullanmak için türleri kullanın class .
Ayrıca, farklı türlerin uygulaması gereken davranışsal sözleşmeleri bildirmek için türler tanımlayabilirsiniz interface . Hem struct hem de class türleri arabirimler uygulayabilir.
Bu türlerin tümünü genellikle daha büyük programlarda ve kitaplıklarda kullanırsınız. SDK'yı yükledikten sonra temel bilgiler bölümündeki sınıflarla ilgili öğreticileri kullanarak bu türleri keşfedebilirsiniz.
"C# dilinde türler oluşturma" öğreticisini tamamladınız.
Kaynakları temizleme
GitHub, 30 günlük etkinlik dışı kalma süresinden sonra Codespace'inizi otomatik olarak siler. Bu serideki diğer öğreticileri keşfetmeyi planlıyorsanız, Codespace'inizi (kod çalışma alanı) hazır durumda bırakabilirsiniz. .NET SDK'sını indirmek için .NET sitesini ziyaret etmeye hazırsanız Codespace'ınızı silebilirsiniz. Codespace'ınızı silmek için bir tarayıcı penceresi açın ve Codespaces'inize gidin. Pencerede kod boşluklarınızın listesini görmeniz gerekir. Learn eğitim kod alanının girişindeki üç noktayı (...) seçin ve sil seçin.
Sonraki Adımlar
Bu serideki sonraki öğretici derse devam edin.
İsterseniz C# Ile İlgili Temel Bilgiler bölümünden ilgili konuları da keşfedebilirsiniz:
- C# tür sistemi — Bu öğreticide kullandığınız türleri ayrıntılı olarak inceleyin.
- Kayıt türleri — Kayıtlar ve bunların ne zaman kullanılacağı hakkında daha fazla bilgi edinin.
- Sınıflar — C# dilinde nesne odaklı programlamayı keşfedin.
- C# ile oluşturabileceğinizler — Öğrendiklerinizle oluşturabileceğiniz uygulama türlerine bakın.