paint-brush
C#: Temel Bilgilerden İleri Tekniklere - Başlangıç Seviyesine Uygun Bir Hile Sayfasıile@ssukhpinder
3,464 okumalar
3,464 okumalar

C#: Temel Bilgilerden İleri Tekniklere - Başlangıç Seviyesine Uygun Bir Hile Sayfası

ile Sukhpinder Singh16m2024/03/24
Read on Terminal Reader

Çok uzun; Okumak

Kapsamlı C# Hile Sayfası, geliştiricilerin C# programlamayla ilgili temel sözdiziminde ve kavramlarda uzmanlaşmasına yardımcı olmak için tasarlanmıştır.
featured image - C#: Temel Bilgilerden İleri Tekniklere - Başlangıç Seviyesine Uygun Bir Hile Sayfası
Sukhpinder Singh HackerNoon profile picture
0-item
1-item
2-item

Kapsamlı C# Hile Sayfası, geliştiricilerin C# programlamayla ilgili temel sözdiziminde ve kavramlarda uzmanlaşmasına yardımcı olmak için tasarlanmıştır.

İçindekiler

  1. Basit yapı
  2. Veri tipleri
  3. Değişkenler
  4. Sabitler
  5. Koşullu İfadeler
  6. Döngüler
  7. Diziler
  8. Listeler
  9. Sözlükler
  10. Yöntemler
  11. Sınıflar ve Nesneler
  12. İstisna işleme
  13. Delegeler, Etkinlikler ve Lambdalar
  14. LINQ (Dil Entegre Sorgulama)
  15. Öznitellikler
  16. Eşzamansız/Beklemede
  17. Çeşitli
  18. Dize Manipülasyonu
  19. Dosya G/Ç
  20. Tarih ve Saat
  21. Jenerikler
  22. Null değerleri
  23. Nitelikler ve Yansıma
  24. Uzatma Yöntemleri
  25. Bağımlılık Enjeksiyonu
  26. Kısmi Sınıflar
  27. Birlikte çalışabilirlik
  28. Anonim Türler
  29. Tuple'lar
  30. Desen Eşleştirme
  31. Yerel İşlevler
  32. Kayıtlar
  33. İfadelerle
  34. Dizin Oluşturucular ve Aralıklar
  35. Beyanname kullanarak
  36. Null yapılabilir Referans Türleri (NRT'ler)
  37. Desen Tabanlı Kullanım
  38. Özellik Modelleri
  39. Varsayılan Arayüz Uygulamaları
  40. Dinamik Bağlama

1. Temel Yapı

Tüm C# programları aşağıda özetlenen temel bir yapıyı takip eder:

 using System; public class HelloWorld { public static void Main(string[] args) { Console.WriteLine("Hello, World!"); } }


.NET 5'ten başlayarak, üst düzey ifadeler Program.cs içeriğini basitleştirir:

 Console.WriteLine("Hello, World");

2. Veri Türleri

C#, aşağıdakiler gibi çeşitli veri türlerini destekler:

  • Değer Türleri: int, char ve float
  • Referans Türleri: dize, sınıf ve dizi

3. Değişkenler

Değişkenler değerlerin sembolik adlarıdır:

 int age = 30; // integer variable string name = "John"; // string variable double PI = 3.14159; // double for floating-point numbers bool isLoggedIn = true; // boolean variable

Tür çıkarımı için 'var'ı kullanın:

 var number = 5; // compiler infers type as int var message = "This is a message"; // compiler infers type as string

4. Sabitler

Sabitler değişmez değerleri tutar:

 const double GRAVITY = 9.81; // constant for gravitational acceleration const string COMPANY_NAME = "MyCompany"; // constant company name

5. Koşullu İfadeler

Koşullara göre program akışını kontrol edin:

 int age = 20; if (age >= 18) { Console.WriteLine("You are eligible to vote."); } else { Console.WriteLine("You are not eligible to vote."); } switch (variable) { /*...*/ } // Switch statement

6. Döngüler

Kodu tekrar tekrar yürütün:

 for (int i = 1; i <= 5; i++) { Console.WriteLine(i); } foreach (var item in collection) { /*...*/ } // Foreach loop while (condition) { /*...*/ } // While loop do { /*...*/ } while (condition); // Do-while loop

7. Diziler

Sabit boyutlu öğe koleksiyonları:

 string[] names = new string[3] { "Alice", "Bob", "Charlie" }; Console.WriteLine(names[1]); // Output: Bob (accessing element at index 1)

8. Listeler

Dizilere benzer dinamik koleksiyonlar:

 List<int> numbers = new List<int>(); numbers.Add(1); numbers.Add(2); numbers.Add(3); foreach (var number in numbers) { Console.WriteLine(number); }

9. Sözlükler

Veri ilişkilendirmeye yönelik anahtar/değer çiftleri:

 Dictionary<string, string> phonebook = new Dictionary<string, string>(); phonebook.Add("John Doe", "123-456-7890"); phonebook.Add("Jane Doe", "987-654-3210"); Console.WriteLine(phonebook["John Doe"]); // Output: 123-456-7890

10. Yöntemler

Yeniden kullanılabilir mantığı kapsülleyin:

 public class Rectangle { public double Width { get; set; } public double Height { get; set; } public double GetArea() { return Width * Height; } } public class Program { public static void Main(string[] args) { Rectangle rect = new Rectangle(); rect.Width = 5; rect.Height = 10; double area = rect.GetArea(); Console.WriteLine($"Area of rectangle: {area}"); } }

11. Sınıflar ve Nesneler

Sınıflar nesnelerin planlarını tanımlar:

 public class MyClass // Class definition { public string PropertyName { get; set; } // Properties store data public void MethodName() { /*...*/ } // Methods define actions } MyClass obj = new MyClass(); // Object creation

12. İstisna İşleme

Çalışma zamanı hatalarını zarif bir şekilde yönetin:

 public static int GetNumberInput() { while (true) { try { Console.WriteLine("Enter a number: "); string input = Console.ReadLine(); return int.Parse(input); } catch (FormatException) { Console.WriteLine("Invalid input. Please enter a number."); } } } public static void Main(string[] args) { int number = GetNumberInput(); Console.WriteLine($"You entered: {number}"); }

13. Delegeler, Etkinlikler ve Lambda

Olay odaklı programlama ve yöntem işleme için:

 public delegate void MyDelegate(); // Delegate declaration event MyDelegate MyEvent; // Event declaration public class Person { public string Name { get; set; } public int Age { get; set; } } public static void Main(string[] args) { List<Person> people = new List<Person>() { new Person { Name = "Alice", Age = 30 }, new Person { Name = "Bob", Age = 25 }, new Person { Name = "Charlie", Age = 40 }, }; people.Sort((p1, p2) => p1.Name.CompareTo(p2.Name)); foreach (var person in people) { Console.WriteLine(person.Name); // Output: Alice, Bob, Charlie (sorted by name) } }

14. LINQ (Dil Entegre Sorgulama)

Veri işleme için sorgulama yetenekleri:

 using System.Linq; public static void Main(string[] args) { List<int> numbers = new List<int>() { 1, 2, 3, 4, 5, 6 }; var evenNumbers = numbers.Where(x => x % 2 == 0); foreach (var number in evenNumbers) { Console.WriteLine(number); // Output: 2, 4, 6 } }

15. Nitelikler

Kod öğelerine meta veriler ekleyin:

 [Obsolete("Use the new DoSomethingV2 method instead.")] public void DoSomething() { // Implementation here } public void DoSomethingV2() { // New and improved implementation }

16. Eşzamansız/Beklemede

Engellenmeyen kod yürütme için:

 using System.Threading.Tasks; public static async Task DownloadFileAsync(string url, string filePath) { // Simulate downloading data asynchronously await Task.Delay(2000); // Simulate a 2-second download // Write downloaded data to the file File.WriteAllText(filePath, "Downloaded content"); Console.WriteLine($"File downloaded to: {filePath}"); } public static void Main(string[] args) { string url = "https://example.com/data.txt"; string filePath = "downloaded_data.txt"; DownloadFileAsync(url, filePath); // Continue program execution while download happens in the background Console.WriteLine("Downloading file..."); Console.WriteLine("Meanwhile, you can do other things..."); }

17. Çeşitli

Ek dil özellikleri:

  • numaralandırma, arayüz, sınıf, kayıt ve yapı


  • dinamik, is, as, var ve nameof

18. Dize Manipülasyonu

Güçlü dize işleme yöntemleri:

 string.Concat(); // Combine strings string.Join(); // Join elements str.Split(); // Split string str.ToUpper(); // Convert to uppercase str.ToLower(); // Convert to lowercase

19. Dosya G/Ç

Dosyalarla yapılan işlemler:

 using System.IO; // Required for File I/O File.ReadAllText(path); // Read file content File.WriteAllText(path, content); // Write to file File.Exists(path); // Check file existence

20. Tarih ve Saat

Tarih ve saat manipülasyonu:

 using System; public static void Main(string[] args) { DateTime startDate = DateTime.Parse("2024-03-10"); DateTime endDate = DateTime.Now; TimeSpan difference = endDate - startDate; Console.WriteLine($"Time difference: {difference.Days} days, {difference.Hours} hours"); }

21. Jenerikler

Tür açısından güvenli veri yapıları:

 public class Stack<T> { private List<T> items = new List<T>(); public void Push(T item) { items.Add(item); } public T Pop() { T item = items[items.Count - 1]; items.RemoveAt(items.Count - 1); return item; } } public static void Main(string[] args) { Stack<string> messages = new Stack<string>(); messages.Push("Hello"); messages.Push("World"); string message = messages.Pop(); Console.WriteLine(message); // Output: World }

22. Nullable'lar

Değer türlerinin boş olmasına izin ver:

 int? nullableInt = null; // Nullable integer

23. Nitelikler ve Yansıma

Meta veriler ve tür iç gözlemi:

 public class Person { public string Name { get; set; } public int Age { get; set; } } public static void Main(string[] args) { Type personType = typeof(Person); PropertyInfo[] properties = personType.GetProperties(); foreach (PropertyInfo property in properties) { Console.WriteLine(property.Name); // Output: Name, Age } }

24. Uzatma Yöntemleri

Mevcut türlere yöntemler ekleyin:

 public static class StringExtensions { public static string ToUppercase(this string str) { return str.ToUpper(); } } public static void Main(string[] args) { string message = "Hello, world!"; string uppercased = message.ToUppercase(); // Using the extension method Console.WriteLine(uppercased); // Output: HELLO, WORLD! }

25. Bağımlılık Enjeksiyonu

Gevşek bağlı kod tasarımı:

 public interface ILogger { void LogMessage(string message); } public class MyService { private readonly ILogger _logger; public MyService(ILogger logger) { _logger = logger; } public void DoSomething() { _logger.LogMessage("Doing something..."); } } // Implementing the ILogger interface (example) public class ConsoleLogger : ILogger { public void LogMessage(string message) { Console.WriteLine(message); } } public static void Main(string[] args) { ILogger logger = new ConsoleLogger(); MyService service = new MyService(logger); service.DoSomething(); }

26. Kısmi Sınıflar

Tek bir sınıf tanımını bölme:

 public partial class MyClass { /*...*/ } // Partial class definition

27. Birlikte Çalışabilirlik

Diğer dillerle birlikte çalışma:

 using System; using System.Runtime.InteropServices; [DllImport("user32.dll")] public static extern int MessageBox(IntPtr hWnd, string lpText, string lpCaption, uint uType); public static void Main(string[] args) { MessageBox(IntPtr.Zero, "Hello from C#!", "Interop Example", 0); }

28. Anonim Türler

Adsız türler oluşturma:csharpCopy kodu

 var person = new { Name = "John", Age = 30 }; Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

29. Tuple

Belirli sayıda öğeye sahip veri yapıları:

 (string Name, int Age) person = ("Alice", 30); Console.WriteLine($"Name: {person.Name}, Age: {person.Age}"); // Accessing elements using Item1 and Item2

30. Desen Eşleştirme

Belirli programlama görevlerini basitleştirir:

 object obj = new Person { Name = "Bob", Age = 25 }; if (obj is Person { Name: "Bob", Age >= 18 }) { Console.WriteLine("Bob is an adult."); }

31. Yerel İşlevler

Mantığı yöntemler içinde kapsülleyin:

 public static int Calculate(int number) { int Factorial(int n) { if (n == 0) return 1; return n * Factorial(n - 1); } return Factorial(number); } public static void Main(string[] args) { int result = Calculate(5); Console.WriteLine($"5! = {result}"); }

32. Kayıtlar

Referans türleri için kısa sözdizimi:

 public record Person(string Name, int Age); public static void Main(string[] args) { Person person1 = new Person("Alice", 30); Person person2 = new Person("Alice", 30); // Records provide default equality comparison if (person1 == person2) { Console.WriteLine("People are equal"); } }

33. İfadelerle

Kayıtlar için tahribatsız mutasyon:

 var john = new Person("John", 30); var jane = john with { Name = "Jane" }; // Non-destructive mutation

34. Dizin Oluşturucular ve Aralıklar

Esnek veri erişimi:

 int[] arr = {0, 1, 2, 3, 4, 5}; var subset = arr[1..^1]; // Indexer and range usage

35. Beyanın Kullanılması

Tek kullanımlık nesneleri atın:

 using var reader = new StreamReader("file.txt"); // using declaration

36. Null yapılabilir Referans Türleri (NRT'ler)

Boş referans istisnalarından kaçının:

 public class Person { public string Name { get; set; } public int Age { get; set; } } public static void Main(string[] args) { Person person = new Person() { Age = 30 }; // NRTs require null checks before accessing properties if (person?.Name != null) { Console.WriteLine(person.Name); } else { Console.WriteLine("Name is null"); } }

37. Desen Bazlı Kullanım

Use ifadesinde daha fazla kalıp:

 public ref struct ResourceWrapper { /*...*/ } // Resource wrapper using var resource = new ResourceWrapper(); // Pattern-based using

38. Özellik Modelleri

Desen eşleştirmede nesnelerin yapısını bozun:

 if (obj is Person { Name: "John", Age: var age }) { /*...*/ } // Property pattern matching

39. Varsayılan Arayüz Uygulamaları

Varsayılan yöntem uygulamalarına sahip arayüzler:

 public interface IPerson { /*...*/ } // Interface with default method public class MyClass : IPerson { /*...*/ } // Class implementing interface

40. Dinamik Bağlama

Çalışma zamanı türü çözünürlüğü:

 dynamic d = 5; // Dynamic binding d = "Hello"; // No compile-time type checking

Çözüm

Bu yapılandırılmış C# Hile Sayfası, ileri düzey konular ve tekniklerle son bularak, C# programlama becerilerini geliştirmeyi amaçlayan geliştiriciler için kapsamlı bir referans sağlar. Ayrıntılı örnekler ve daha fazla araştırma için bu kılavuzda özetlenen belirli bölümlere bakın. Mutlu kodlama!

C# Programlama🚀

C# topluluğunun bir parçası olduğunuz için teşekkür ederiz! Sen ayrılmadan:

Buraya kadar geldiyseniz lütfen takdirinizi alkışlayarak gösterin ve yazarı takip edin! 👏️️

Bizi takip edin: X | LinkedIn | Geliştirme | Hashnode | Bülten | Tumblr

Diğer platformlarımızı ziyaret edin: GitHub | instagram | Tiktok | Quora | Daily.dev

İlham Veren: https://zerotomastery.io/cheatsheets/csharp-cheat-sheet/#constants


Burada da yayınlandı