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.
C# kullanan bir ekibe katılıyorsanız ya da sunucu tarafı veya tam yığın geliştirme için araştırıyorsanız, bu makale hızla üretken olmanıza yardımcı olur. JavaScript ve TypeScript'ten tanıdıkları ve C# ile ilgili yeni özellikleri vurgular.
C#, TypeScript ve JavaScript'in tümü C dil ailesinin üyeleridir. Diller arasındaki benzerlikler, C# dilinde hızla üretken olmanıza yardımcı olur.
-
Benzer söz dizimi: JavaScript, TypeScript ve C# C dil ailesindedir. Bu benzerlik, C# okuyabileceğiniz ve anlayabileceğiniz anlamına gelir. Bazı farklılıklar vardır, ancak söz diziminin çoğu JavaScript ve C ile aynıdır. Küme ayraçları ve noktalı virgüller tanıdıktır. ,
ifveelsegibiswitchdenetim deyimleri aynıdır. ,forvewhiledöngü deyimlerido...whileaynıdır.classveinterfaceiçin aynı anahtar sözcükler hem C# hem de TypeScript'te bulunur.public'denprivate'a kadar TypeScript ve C# dilindeki erişim değiştiricileri aynıdır. -
=>belirteci: Tüm diller basit işlev tanımlarını destekler. C# dilinde bunlar lambda ifadeleri olarak adlandırılır. JavaScript'te bunlar genellikle ok işlevleri olarak adlandırılır. - İşlev hiyerarşileri: Üç dil de diğer işlevlerde tanımlanan işlevler olanyerel işlevleri destekler.
-
Asenkron / Await: Üç dil de asenkron programlama için aynı
asyncveawaitanahtar sözcükleri paylaşır. - Çöp toplama: Her üç dil de otomatik bellek yönetimi için bir çöp toplayıcıyı temel alır.
-
Olay modeli: C#'nin
eventsöz dizimi, Belge nesne modeli (DOM) olayları için JavaScript modeline benzer. - Paket yöneticisi: NuGet , JavaScript uygulamaları için npm'ye benzer şekilde C# için en yaygın paket yöneticisidir. C# kitaplıkları derlemelerinde teslim edilir.
Bir bakışta söz dizimi
Aşağıdaki örneklerde yan yana birkaç yaygın desen gösterilmektedir. Bu karşılaştırmalar kapsamlı değildir, ancak söz dizimi farklılıkları hakkında size hızlı bir fikir verir.
Tür ek açıklamaları:
// TypeScript
let name: string = "Hello";
let count: number = 5;
// C#
string name = "Hello";
int count = 5;
Async / await:
// TypeScript
async function fetchData(): Promise<string> {
const response = await fetch(url);
return await response.text();
}
// C#
async Task<string> FetchDataAsync() {
var response = await client.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
Daha fazla bilgi edinmek için bkz. Zaman uyumsuz programlama.
Sınıflar:
// TypeScript
class Point {
constructor(public x: number, public y: number) {}
}
// C#
record Point(int X, int Y);
Daha fazla bilgi edinmek için bkz. Kayıtlar.
Desen eşleştirme:
// TypeScript - manual type checking
if (typeof value === "string") { /* ... */ }
// C# - pattern matching
if (value is string s) { /* use s */ }
Daha fazla bilgi edinmek için bkz . Desen eşleştirme.
C# dilinde sizin için neler yeni
C# dilini öğrenirken JavaScript'in parçası olmayan kavramlarla karşılaşırsınız. TypeScript kullanıyorsanız bu kavramlardan bazıları size tanıdık gelebilir:
-
C# Türü Sistem: C# kesin olarak yazılan bir dildir. Her değişkenin bir türü vardır ve bu tür değiştirilemez.
classveyastructtürleri tanımlarsınız. Diğer türler tarafından uygulanan davranışı tanımlayaninterfacetanımları tanımlayabilirsiniz. TypeScript bu kavramların çoğunu içerir, ancak TypeScript JavaScript üzerinde oluşturulduğundan tür sistemi o kadar katı değildir. -
Desen eşleştirme: Desen eşleştirme, karmaşık veri yapılarının şekline göre kısa koşullu deyimleri ve ifadeleri etkinleştirir.
isifadesi değişkenin bir desen olup olmadığını denetler. Desen tabanlıswitchifadesi, bir değişkeni incelemek ve özelliklerine göre kararlar almak için zengin bir söz dizimi sağlar. - Dize ilişkilendirme ve ham dize değişmez değerleri: Dize ilişkilendirmesi, konumsal tanımlayıcıları kullanmak yerine bir dizeye değerlendirilen ifadeler eklemenize olanak tanır. Ham dize değişmez değerleri, metindeki kaçış dizilerini en aza indirmek için bir yol sağlar.
-
Boş değer atanabilir ve boş değer atanamayan türler: C# son eki bir türe ekleyerek
?destekler. Null atanabilir türler için,nullkontrolü yapmadan ifadenin doğrudan erişimini gerçekleştirirseniz derleyici sizi uyarır. Nullable olmayan türler için, o değişkene birnulldeğeri atamış olabileceğiniz durumlarda derleyici sizi uyarır. Uygulamanızın System.NullReferenceExceptionhatası vermesini en aza indirebilir. Bu söz dizimi, TypeScript'in isteğe bağlı özellikler için?kullanımıyla tanıdık gelebilir. - LINQ: Dil tümleşik sorgusu (LINQ), depolama alanına bakılmaksızın verileri sorgulamak ve dönüştürmek için ortak bir söz dizimi sağlar.
İpucu
C#'nin tür sistemi hakkında daha fazla bilgi edinmek için, —class ve struct karşılaştırması, generics ve arabirimler dahil olmak üzere— Temel Bilgiler bölümündeki Tür sistemi genel bakış sayfasını ziyaret edin.
Daha fazla bilgi edindikçe, diğer farklılıklar belirginleşir, ancak bu farklılıkların çoğu kapsam olarak daha küçüktür.
JavaScript ve TypeScript'ten bazı tanıdık özellikler ve deyimler C# dilinde kullanılamaz:
-
dinamik türler: C# statik yazma kullanır. Bir değişken bildirimi türü içerir ve bu tür değiştirilemez. C# dilinde çalışma zamanı bağlaması sağlayan bir
dynamictürü vardır. -
Prototip devralma: C# devralma türü bildiriminin bir parçasıdır. C#
classbildirimi herhangi bir temel sınıfı belirtir. JavaScript'te, herhangi bir örnekte temel türü ayarlamak için__proto__özelliğini ayarlarsınız. - Yorumlanan dil: C# kodu çalıştırılmadan önce derlenmelidir. JavaScript kodu doğrudan tarayıcıda çalıştırılabilir.
Buna ek olarak, C# dilinde birkaç TypeScript özelliği daha kullanılamaz:
- Birleşim türleri: C# 15'le başlayarak C# birleşim türlerini destekler. Birlik, bir değerin temsil edebileceği sınırlı bir adlandırılmış durumlar kümesi tanımlar ve derleyici bu durumlar üzerinde tükenmez desen eşleştirmesi sağlar.
-
Dekoratörler: C# dilinde dekoratör yok.
@sealedgibi bazı yaygın dekoratörler C# dilinde ayrılmış anahtar sözcüklerdir. Diğer yaygın dekoratörlerin ile ilgiliöznitelikleri olabilir. Diğer dekoratörler için kendi özniteliklerinizi oluşturabilirsiniz. - Daha bağışlayıcı söz dizimi: C# derleyicisi kodu JavaScript'in gerektirdiğinden daha katı bir şekilde ayrıştırıyor.
Bir web uygulaması oluşturuyorsanız uygulamanızı derlemek için Blazor'ı kullanmayı göz önünde bulundurun. Blazor, C# için oluşturulmuş bir tam yığın web çerçevesidir. Blazor bileşenleri sunucuda, .NET derlemeleri olarak veya WebAssembly kullanarak istemcide çalıştırılabilir. Blazor, sık kullandığınız JavaScript veya TypeScript kitaplıklarıyla birlikte çalışmanızı destekler.
Sonraki Adımlar
- C# turu: Tüm C# özelliklerine üst düzey bir genel bakış elde edin.
- Başlangıç öğreticileri: Etkileşimli derslerle C# dilini adım adım öğrenin.
- C# ile oluşturabileceğinizler: C# ile oluşturabileceğiniz uygulama türlerini keşfedin.
- C# ile ilgili temel bilgiler: Tür sistemini, nesne odaklı programlamayı ve daha fazlasını derinlemesine inceleme.