C# Hile Sayfası
Son güncelleme
Hello World ve program yapısı
Üst düzey ifadeler (.NET 6'dan beri), şablon sınıfını atlamanıza olanak tanır.
| Element | Kod |
|---|---|
| Üst düzey program | Console.WriteLine("Hello, World!"); |
| Bir ad alanını içe aktar | using System; |
| Klasik giriş noktası | static void Main(string[] args) { ... } |
| Bir satır yazdır | Console.WriteLine("text"); |
| Bir satır oku | string s = Console.ReadLine(); |
| Dize interpolasyonu | Console.WriteLine($"Hi {name}"); |
| Yorumlar | // line ve /* block */ |
Veri tipleri
| Tip | Açıklama |
|---|---|
int | 32 bit işaretli tam sayı |
long | 64 bit işaretli tam sayı |
double / float | Kayan noktalı sayılar |
decimal | Yüksek duyarlıklı ondalık (para) |
bool | true veya false |
char | Tek Unicode karakteri |
string | Değiştirilemez metin |
var | Derleyici tipi çıkarır |
int? | Null olabilen değer tipi |
Değişkenler
| İşlem | Söz dizimi |
|---|---|
| Tanımla ve ilk değer ata | int x = 5; |
| Tip çıkarımı | var name = "Ada"; |
| Sabit | const double Pi = 3.14159; |
| Salt okunur alan | readonly int id; |
| Null olabilen referans | string? maybe = null; |
| Null birleştirme | var y = maybe ?? "default"; |
| Null koşullu | int? len = text?.Length; |
Kontrol akışı
| İfade | Söz dizimi |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| Switch ifadesi (statement) | switch (n) { case 1: ...; break; default: ...; } |
| Switch ifadesi (expression) | var s = n switch { 1 => "one", _ => "other" }; |
| While döngüsü | while (i < n) { ... } |
| Do-while döngüsü | do { ... } while (i < n); |
| For döngüsü | for (int i = 0; i < n; i++) { ... } |
| Foreach döngüsü | foreach (var item in list) { ... } |
| Break / continue | break; bir döngüden çıkar, continue; bir sonraki yinelemeye atlar |
Metotlar
| İşlem | Söz dizimi |
|---|---|
| Bir metot tanımla | int Add(int a, int b) { return a + b; } |
| İfade gövdeli | int Add(int a, int b) => a + b; |
| Geri dönüş değeri yok | void Greet() { ... } |
| İsteğe bağlı parametre | int Pow(int b, int e = 2) { ... } |
| Adlandırılmış argümanlar | Pow(b: 2, e: 3); |
| Out parametresi | bool TryParse(string s, out int n) { ... } |
| Statik metot | static int Square(int x) => x * x; |
| Lambda ifadesi | Func<int, int> f = x => x * 2; |
Sınıflar ve OOP
| İşlem | Söz dizimi |
|---|---|
| Bir sınıf tanımla | class Dog { ... } |
| Otomatik özellik | public string Name { get; set; } |
| Salt okunur özellik | public int Id { get; } |
| Yapıcı (constructor) | public Dog(string name) { Name = name; } |
| Bir nesne oluştur | var d = new Dog("Rex"); |
| Kalıtım | class Puppy : Dog { ... } |
| Arayüz | interface IRunnable { void Run(); } |
| Bir metodu geçersiz kıl | public override void Speak() { ... } |
| Record (değiştirilemez) | record Point(int X, int Y); |
Koleksiyonlar
System.Collections.Generic'ten generic koleksiyonlar.
| Tip | Kullanım ve örnek |
|---|---|
List<T> | Dinamik dizi: list.Add(1); list.Count; |
Dictionary<K, V> | Anahtar-değer: dict["a"] = 1; dict.ContainsKey("a"); |
HashSet<T> | Benzersiz değerler: set.Add(5); set.Contains(5); |
Queue<T> | FIFO: q.Enqueue(x); q.Dequeue(); |
Stack<T> | LIFO: s.Push(x); s.Pop(); |
| Dizi | int[] nums = { 1, 2, 3 }; |
| Koleksiyon başlatıcı | var l = new List<int> { 1, 2, 3 }; |
| Bir sözlüğü dolaş | foreach (var kv in dict) { kv.Key; kv.Value; } |
LINQ
Koleksiyonları akıcı şekilde sorgulayın; System.Linq'ten.
| İşlem | Söz dizimi |
|---|---|
| Filtrele | nums.Where(n => n > 0) |
| Yansıt / dönüştür | nums.Select(n => n * 2) |
| Sırala | nums.OrderBy(n => n) / OrderByDescending(...) |
| İlk eşleşme | nums.First(n => n > 5) / FirstOrDefault(...) |
| Any / all | nums.Any(n => n < 0) / nums.All(n => n > 0) |
| Eşleşmeleri say | nums.Count(n => n > 0) |
| Toplama (aggregate) | nums.Sum(), nums.Max(), nums.Average() |
| Grupla | items.GroupBy(i => i.Category) |
| Somutlaştır | .ToList() / .ToArray() |
Yaygın desenler (özellikler, async)
| Desen | Söz dizimi |
|---|---|
| Async metot | async Task<int> GetAsync() { ... } |
| Bir görevi await et | var result = await GetAsync(); |
| Try / catch | try { ... } catch (Exception e) { ... } |
| Finally | finally { ... } her zaman çalışır |
| Using (dispose) | using var file = File.OpenRead(path); |
| Dize biçimlendirme | $"Total: {amount:C}" |
| Generic sınıf | class Box<T> { public T Value; } |
| Desen eşleştirme | if (obj is Dog d) { d.Bark(); } |
En çok başvurduğunuz C# söz dizimi, koleksiyonlar ve LINQ sorguları tek sayfada. Bu C# hile sayfası, C# yazmak için hızlı bir başvurudur - veri tipleri, kontrol akışı, sınıflar, List/Dictionary koleksiyonları, LINQ ve deyimsel .NET kodunu tanımlayan özellik ve async desenleri.
Buradaki her şey .NET üzerinde standart C#'tır ve dotnet CLI ile çalışır. İhtiyacınız olanı kopyalayın ya da herhangi bir kod parçasını C# playground'da canlı deneyin - kurmanız gereken bir SDK yok.
C# hile sayfası SSS
Bu C# hile sayfası ücretsiz mi?
C#'ta değer tipleri ile referans tipleri arasındaki fark nedir?
int, double, bool, struct, enum) verilerini doğrudan tutar ve atandıklarında veya bir metoda geçirildiklerinde kopyalanır - kopyayı değiştirmek orijinali etkilemez. Referans tipleri (class, string, diziler, List<T>) heap üzerindeki verilere bir referans tutar, dolayısıyla iki değişken aynı nesneyi gösterebilir ve biri üzerinden yapılan bir değişiklik diğeri üzerinden görülür. string bir referans tipidir ama değiştirilemez gibi davranır.LINQ nedir ve ne zaman kullanmalıyım?
Where, Select ve OrderBy gibi metotlar kümesidir. Aksi takdirde filtrelenmiş veya yansıtılmış bir liste oluşturmak için döngü yazacağınız her durumda kullanın - özlüdür ve ToList() çağırana ya da dolaşana kadar tembel olarak değerlendirilir.