Menu
Coddy logo textTech

C# Cheat Sheet: דף עזר מהיר

עודכן לאחרונה

Hello World ומבנה התוכנית

משפטים ברמה העליונה (מאז .NET 6) מאפשרים לוותר על מחלקת ה-boilerplate.

רכיבקוד
תוכנית ברמה העליונהConsole.WriteLine("Hello, World!");
ייבוא namespaceusing System;
נקודת כניסה קלאסיתstatic void Main(string[] args) { ... }
הדפסת שורהConsole.WriteLine("text");
קריאת שורהstring s = Console.ReadLine();
שילוב משתנים במחרוזת (Interpolation)Console.WriteLine($"Hi {name}");
הערות// line ו-/* block */

טיפוסי נתונים

טיפוסתיאור
intמספר שלם 32 ביט עם סימן
longמספר שלם 64 ביט עם סימן
double / floatמספרים בנקודה צפה
decimalמספר עשרוני בדיוק גבוה (כסף)
booltrue או false
charתו Unicode יחיד
stringטקסט בלתי ניתן לשינוי
varהקומפיילר מסיק את הטיפוס
int?טיפוס ערך שיכול להיות null

משתנים

פעולהתחביר
הצהרה ואתחולint x = 5;
הסקת טיפוסvar name = "Ada";
קבועconst double Pi = 3.14159;
שדה לקריאה בלבדreadonly int id;
טיפוס הפניה שיכול להיות nullstring? maybe = null;
Null-coalescingvar y = maybe ?? "default";
Null-conditionalint? len = text?.Length;

בקרת זרימה

משפטתחביר
If / elseif (x > 0) { ... } else { ... }
משפט switchswitch (n) { case 1: ...; break; default: ...; }
ביטוי switchvar s = n switch { 1 => "one", _ => "other" };
לולאת whilewhile (i < n) { ... }
לולאת do-whiledo { ... } while (i < n);
לולאת forfor (int i = 0; i < n; i++) { ... }
לולאת foreachforeach (var item in list) { ... }
Break / continuebreak; יוצא מהלולאה, continue; מדלג לאיטרציה הבאה

מתודות

פעולהתחביר
הגדרת מתודהint Add(int a, int b) { return a + b; }
גוף בביטוי (Expression-bodied)int Add(int a, int b) => a + b;
ללא ערך החזרהvoid Greet() { ... }
פרמטר אופציונליint Pow(int b, int e = 2) { ... }
ארגומנטים בשםPow(b: 2, e: 3);
פרמטר outbool TryParse(string s, out int n) { ... }
מתודה סטטיתstatic int Square(int x) => x * x;
ביטוי LambdaFunc<int, int> f = x => x * 2;

מחלקות ו-OOP

פעולהתחביר
הגדרת מחלקהclass Dog { ... }
Auto property (property אוטומטי)public string Name { get; set; }
Property לקריאה בלבדpublic int Id { get; }
בנאיpublic Dog(string name) { Name = name; }
יצירת אובייקטvar d = new Dog("Rex");
ירושהclass Puppy : Dog { ... }
ממשק (Interface)interface IRunnable { void Run(); }
דריסת מתודהpublic override void Speak() { ... }
Record (בלתי ניתן לשינוי)record Point(int X, int Y);

Collections

Collections גנריים מתוך System.Collections.Generic.

טיפוסשימוש ודוגמה
List<T>מערך דינמי: list.Add(1); list.Count;
Dictionary<K, V>מפתח-ערך: dict["a"] = 1; dict.ContainsKey("a");
HashSet<T>ערכים ייחודיים: set.Add(5); set.Contains(5);
Queue<T>FIFO: q.Enqueue(x); q.Dequeue();
Stack<T>LIFO: s.Push(x); s.Pop();
מערךint[] nums = { 1, 2, 3 };
אתחול collectionvar l = new List<int> { 1, 2, 3 };
מעבר על dictionaryforeach (var kv in dict) { kv.Key; kv.Value; }

LINQ

שאילתות זורמות על collections; מתוך System.Linq.

פעולהתחביר
סינוןnums.Where(n => n > 0)
הטלה / מיפויnums.Select(n => n * 2)
מיוןnums.OrderBy(n => n) / OrderByDescending(...)
ההתאמה הראשונהnums.First(n => n > 5) / FirstOrDefault(...)
Any / All (האם יש / האם כולם)nums.Any(n => n < 0) / nums.All(n => n > 0)
ספירת התאמותnums.Count(n => n > 0)
צבירהnums.Sum(), nums.Max(), nums.Average()
קיבוץitems.GroupBy(i => i.Category)
המרה לאוסף ממשי.ToList() / .ToArray()

דפוסים נפוצים (properties, async)

דפוסתחביר
מתודה אסינכרוניתasync Task<int> GetAsync() { ... }
המתנה ל-taskvar result = await GetAsync();
Try / catchtry { ... } catch (Exception e) { ... }
Finallyfinally { ... } תמיד רץ
Using (שחרור משאבים)using var file = File.OpenRead(path);
עיצוב מחרוזות$"Total: {amount:C}"
מחלקה גנריתclass Box<T> { public T Value; }
Pattern matchingif (obj is Dog d) { d.Bark(); }

התחביר, ה-collections ושאילתות ה-LINQ של C# שהכי שימושיים, בעמוד אחד. ה-C# cheat sheet הזה הוא דף עזר מהיר לכתיבת C#: טיפוסי הנתונים, בקרת זרימה, מחלקות, ה-collections List/Dictionary, LINQ, ודפוסי ה-properties וה-async שמאפיינים קוד .NET אידיומטי.

כל מה שכאן הוא C# סטנדרטי על .NET ורץ עם ה-CLI של dotnet. העתיקו את מה שצריך, או נסו כל קטע קוד בזמן אמת בעורך האונליין של C#, בלי להתקין SDK.

שאלות נפוצות על ה-C# cheat sheet

האם ה-C# cheat sheet הזה בחינם?
כן. ה-C# cheat sheet הזה חינמי לגמרי, בלי צורך בהרשמה. שמרו אותו במועדפים וחזרו אליו בכל פעם שצריך לבדוק תחביר, collection או מתודת LINQ.
מה ההבדל בין טיפוסי ערך לטיפוסי הפניה ב-C#?
טיפוסי ערך (int, double, bool, struct, enum) מחזיקים את הנתונים שלהם ישירות ומועתקים בהשמה או בהעברה למתודה: שינוי של העותק לא משפיע על המקור. טיפוסי הפניה (class, string, מערכים, List<T>) מחזיקים הפניה לנתונים ב-heap, כך ששני משתנים יכולים להצביע על אותו אובייקט ושינוי דרך אחד מהם נראה גם דרך השני. string הוא טיפוס הפניה, אבל מתנהג כבלתי ניתן לשינוי.
מה זה LINQ ומתי כדאי להשתמש בו?
LINQ (Language Integrated Query) הוא אוסף מתודות כמו Where, Select ו-OrderBy שמאפשרות לסנן, לשנות ולצבור collections בשרשרת קריאות ברורה, במקום לולאות ידניות. השתמשו בו בכל פעם שהייתם כותבים לולאה כדי לבנות רשימה מסוננת או ממופה: הוא תמציתי ומחושב בעצלות עד שקוראים ל-ToList() או עוברים עליו.
אפשר לתרגל C# אונליין?
כן. פתחו את עורך האונליין של C# כדי להריץ כל קטע קוד מדף העזר הזה בדפדפן, בלי להתקין SDK. כשתרצו מסגרת מסודרת, קורס C# האינטראקטיבי והחינמי של Coddy לוקח אתכם צעד אחר צעד ממשתנים ולולאות ועד מחלקות, collections ו-LINQ.
האם דף העזר הזה מתאים למתחילים?
כן. הוא מסודר מאבני הבניין הנפוצות ביותר (טיפוסים, בקרת זרימה, מתודות) ועד המתקדמות (LINQ, async, generics), כך שאפשר להשתמש בחלקים העליונים כבר מהיום הראשון ולהתקדם לשאר בהמשך.
איור של שפות התכנות ב-Coddy

ללמוד C# עם Coddy

להתחיל