Lembar Cheat C# Comprehensive dirancang untuk membantu pengembang dalam menguasai sintaks utama dan konsep yang terkait dengan pemrograman C#.
Struktur dasar
Tipe data
Variabel
Konstanta
Pernyataan bersyarat
Loop
Array
Daftar
Kamus
Metode
Kelas & Objek
Penanganan pengecualian
Delegasi, Acara & Lambdas
LINQ (kueri yang terintegrasi dengan bahasa)
Atribut
Async/menunggu
Aneka ragam
Manipulasi string
File I/O.
Tanggal & Waktu
Generik
Nullable
Atribut & Refleksi
Metode ekstensi
Injeksi ketergantungan
Kelas parsial
Interoperabilitas
Tipe anonim
Tupel
Pencocokan pola
Fungsi lokal
Catatan
dengan ekspresi
Pengindeks dan rentang
menggunakan deklarasi
Tipe Referensi Nullable (NRT)
Penggunaan berbasis pola
Pola properti
Implementasi Antarmuka Default
Ikatan Dinamis
Semua program C# mengikuti struktur mendasar, diuraikan di bawah ini:
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Dimulai dengan .NET 5, pernyataan tingkat atas menyederhanakan konten program.cs:
Console.WriteLine("Hello, World");
C# mendukung berbagai tipe data seperti:
Jenis Nilai: int, char, float
Jenis referensi: string, kelas, array
Variabel adalah nama simbolis untuk nilai:
int age = 30; // integer variable
string name = "John"; // string variable
double PI = 3.14159; // double for floating-point numbers
bool isLoggedIn = true; // boolean variable
Gunakan 'var' untuk inferensi tipe:
var number = 5; // compiler infers type as int
var message = "This is a message"; // compiler infers type as string
Konstanta memiliki nilai kekal:
const double GRAVITY = 9.81; // constant for gravitational acceleration
const string COMPANY_NAME = "MyCompany"; // constant company name
Aliran program kontrol berdasarkan kondisi:
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
Jalankan kode berulang kali:
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
Koleksi elemen ukuran tetap:
string[] names = new string[3] { "Alice", "Bob", "Charlie" };
Console.WriteLine(names[1]); // Output: Bob (accessing element at index 1)
Koleksi dinamis mirip dengan array:
List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
foreach (var number in numbers)
{
Console.WriteLine(number);
}
Pasangan Nilai Kunci untuk Asosiasi Data:
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
Merangkum logika yang dapat digunakan kembali:
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}");
}
}
Kelas menentukan cetak biru untuk objek:
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
Kelola kesalahan runtime dengan anggun:
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}");
}
Untuk pemrograman dan penanganan metode yang digerakkan oleh acara:
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)
}
}
Kemampuan kueri untuk manipulasi data:
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
}
}
Tambahkan metadata ke elemen kode:
[Obsolete("Use the new DoSomethingV2 method instead.")]
public void DoSomething()
{
// Implementation here
}
public void DoSomethingV2()
{
// New and improved implementation
}
Untuk eksekusi kode non-blocking:
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...");
}
Fitur Bahasa Tambahan:
enum, antarmuka, kelas, catatan, struct
dinamis, adalah, sebagai, var, nameof
Metode penanganan string yang kuat:
string.Concat(); // Combine strings
string.Join(); // Join elements
str.Split(); // Split string
str.ToUpper(); // Convert to uppercase
str.ToLower(); // Convert to lowercase
Operasi dengan file:
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
Manipulasi tanggal dan waktu:
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");
}
Struktur data tipe-aman:
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
}
Izinkan jenis nilai menjadi nol:
int? nullableInt = null; // Nullable integer
Metadata dan ketik introspeksi:
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
}
}
Tambahkan metode ke jenis yang ada:
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!
}
Desain kode yang digabungkan secara longgar:
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();
}
Memisahkan satu kelas definisi:
public partial class MyClass { /*...*/ } // Partial class definition
Interop dengan bahasa lain:
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);
}
Membuat tipe yang tidak disebutkan namanya: kode csharpcopy
var person = new { Name = "John", Age = 30 };
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
Struktur data dengan sejumlah elemen tertentu:
(string Name, int Age) person = ("Alice", 30);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}"); // Accessing elements using Item1 and Item2
Menyederhanakan tugas pemrograman tertentu:
object obj = new Person { Name = "Bob", Age = 25 };
if (obj is Person { Name: "Bob", Age >= 18 })
{
Console.WriteLine("Bob is an adult.");
}
Merangkum logika dalam metode:
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}");
}
Sintaks ringkas untuk jenis referensi:
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");
}
}
Mutasi non-destruktif untuk catatan:
var john = new Person("John", 30);
var jane = john with { Name = "Jane" }; // Non-destructive mutation
Akses data yang fleksibel:
int[] arr = {0, 1, 2, 3, 4, 5};
var subset = arr[1..^1]; // Indexer and range usage
Buang objek idisposable:
using var reader = new StreamReader("file.txt"); // using declaration
Hindari pengecualian referensi nol:
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");
}
}
Lebih banyak pola dalam pernyataan penggunaan:
public ref struct ResourceWrapper { /*...*/ } // Resource wrapper
using var resource = new ResourceWrapper(); // Pattern-based using
Mendekonstruksi objek dalam pencocokan pola:
if (obj is Person { Name: "John", Age: var age }) { /*...*/ } // Property pattern matching
Antarmuka dengan implementasi metode default:
public interface IPerson { /*...*/ } // Interface with default method
public class MyClass : IPerson { /*...*/ } // Class implementing interface
Resolusi Jenis Runtime:
dynamic d = 5; // Dynamic binding
d = "Hello"; // No compile-time type checking
Lembar cheat C# terstruktur ini diakhiri dengan topik dan teknik canggih, memberikan referensi komprehensif untuk pengembang yang bertujuan untuk meningkatkan keterampilan pemrograman C# mereka. Untuk contoh terperinci dan eksplorasi lebih lanjut, lihat bagian spesifik yang diuraikan dalam panduan ini. Happy Coding!
Terinspirasi oleh: https://zerotomastery.io/cheatsheets/csharp-heat-sheet/#constants