\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{PotatoCodes} \pdfinfo{ /Title (c-for-potatoes.pdf) /Creator (Cheatography) /Author (PotatoCodes) /Subject (C\# for Potatoes Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{91BECF} \definecolor{LightBackground}{HTML}{F1F6F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{C\# for Potatoes Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{PotatoCodes} via \textcolor{DarkBackground}{\uline{cheatography.com/205795/cs/43920/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}PotatoCodes \\ \uline{cheatography.com/potatocodes} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 29th July, 2024.\\ Updated 29th July, 2024.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{x{1.368 cm} x{3.116 cm} x{3.116 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{String Manipulation}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{ToLower} & Converts all characters to lowercase. & str.ToLower() ~ \seqsplit{"HELLO".ToLower()} ~ // "hello" \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \seqsplit{ToUpper} & Converts all characters to uppercase. & str.ToUpper() ~ \seqsplit{"hello".ToUpper()} ~ // "HELLO" \tn % Row Count 8 (+ 4) % Row 2 \SetRowColor{LightBackground} Trim & Removes leading and trailing white-space characters. & str.Trim() ~ " hello ".Trim() ~ // "hello" \tn % Row Count 12 (+ 4) % Row 3 \SetRowColor{white} \seqsplit{TrimStart} & Removes leading white-space characters. & str.TrimStart() ~ " hello ".TrimStart() ~ // "hello " \tn % Row Count 16 (+ 4) % Row 4 \SetRowColor{LightBackground} \seqsplit{TrimEnd} & Removes trailing white-space characters. & str.TrimEnd() ~ " hello ".TrimEnd() ~ // " hello" \tn % Row Count 20 (+ 4) % Row 5 \SetRowColor{white} \seqsplit{Substring} & Retrieves a substring starting at a specified position. & str.Substring(0, 5) ~ "hello \seqsplit{world".Substring(0}, 5) ~ // "hello" \tn % Row Count 25 (+ 5) % Row 6 \SetRowColor{LightBackground} \seqsplit{Replace} & Replaces all occurrences of a specified string with another & \seqsplit{str.Replace("world"}, "C\#") ~ "hello \seqsplit{world".Replace("world"}, "C\#") // "hello C\#" \tn % Row Count 31 (+ 6) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.368 cm} x{3.116 cm} x{3.116 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{String Manipulation (cont)}} \tn % Row 7 \SetRowColor{LightBackground} Split & Splits a string into an array based on a delimiter. & str.Split(' ') ~ "hello world".Split(' ') ~ // {[}"hello", "world"{]} \tn % Row Count 5 (+ 5) % Row 8 \SetRowColor{white} Join & Concatenates an array into a single string with a delimiter & string.Join(" ", words) ~ string.Join(" ", new{[}{]} \{ "hello", "world" \}) ~ // "hello world" \tn % Row Count 12 (+ 7) % Row 9 \SetRowColor{LightBackground} \seqsplit{Contains} & Checks if a string contains a specified substring. & \seqsplit{str.Contains("world")} ~ "hello \seqsplit{world".Contains("world")} ~ // true \tn % Row Count 17 (+ 5) % Row 10 \SetRowColor{white} \seqsplit{IndexOf} & Finds the first occurrence of a substring. & \seqsplit{str.IndexOf("world")} ~ "hello \seqsplit{world".IndexOf("world")} ~ // 6 \tn % Row Count 22 (+ 5) % Row 11 \SetRowColor{LightBackground} \seqsplit{LastIndexOf} & Finds the last occurrence of a substring. & \seqsplit{str.LastIndexOf("world")} ~ "hello world \seqsplit{world".LastIndexOf("world")} ~ // 12 \tn % Row Count 28 (+ 6) % Row 12 \SetRowColor{white} \seqsplit{StartsWith} & Checks if a string starts with a specified substring. & \seqsplit{str.StartsWith("hello")} ~ "hello \seqsplit{world".StartsWith("hello")} ~ // true \tn % Row Count 33 (+ 5) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.368 cm} x{3.116 cm} x{3.116 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{String Manipulation (cont)}} \tn % Row 13 \SetRowColor{LightBackground} \seqsplit{EndsWith} & Checks if a string ends with a specified substring. & \seqsplit{str.EndsWith("world")} ~ "hello \seqsplit{world".EndsWith("world")} ~ // true \tn % Row Count 5 (+ 5) % Row 14 \SetRowColor{white} \seqsplit{IsNullOrEmpty} & Checks if a string is null or empty. & \seqsplit{string.IsNullOrEmpty(str)} ~ \seqsplit{string.IsNullOrEmpty("")} ~ // true \tn % Row Count 10 (+ 5) % Row 15 \SetRowColor{LightBackground} \seqsplit{IsNullOrWhiteSpace} & Checks if a string is null, empty, or whitespace. & \seqsplit{string.IsNullOrWhiteSpace(str)} ~ \seqsplit{string.IsNullOrWhiteSpace("} ") ~ // true \tn % Row Count 16 (+ 6) % Row 16 \SetRowColor{white} Format & Replaces format items in a string with the string representation of corresponding objects. & \seqsplit{string.Format("Hello}, \{0\}!", "world") ~ // "Hello, world!" \tn % Row Count 22 (+ 6) % Row 17 \SetRowColor{LightBackground} \seqsplit{PadLeft} & Pads a string on the left with a specified character. & str.PadLeft(10) ~ \seqsplit{"hello".PadLeft(10)} ~ // " hello" \tn % Row Count 26 (+ 4) % Row 18 \SetRowColor{white} \seqsplit{PadRight} & Pads a string on the right with a specified character. & \seqsplit{str.PadRight(10)} ~ \seqsplit{"hello".PadRight(10)} ~ // "hello " \tn % Row Count 30 (+ 4) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.368 cm} x{3.116 cm} x{3.116 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{String Manipulation (cont)}} \tn % Row 19 \SetRowColor{LightBackground} \seqsplit{ToCharArray} & Converts the string to a character array. & \seqsplit{str.ToCharArray()} ~ \seqsplit{"hello".ToCharArray()} ~ // {[}'h', 'e', 'l', 'l', 'o'{]} \tn % Row Count 6 (+ 6) % Row 20 \SetRowColor{white} \seqsplit{Compare} & Compares two strings and returns an integer indicating their relative position in the sort order. & \seqsplit{string.Compare("apple"}, "banana") ~ // -1 \tn % Row Count 13 (+ 7) % Row 21 \SetRowColor{LightBackground} Equals & Checks if two strings are equal. & \seqsplit{"hello".Equals("hello")} ~ // true \tn % Row Count 16 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{1.9 cm} x{2.888 cm} x{2.812 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{Errors}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{SystemException} & Base class for all system-defined exceptions. & catch \seqsplit{(SystemException} ex) \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \seqsplit{ArgumentException} & Thrown when one of the arguments provided to a method is not valid. & throw new \seqsplit{ArgumentException("message"}, "paramName"); \tn % Row Count 8 (+ 5) % Row 2 \SetRowColor{LightBackground} \seqsplit{ArgumentNullException} & Thrown when a null argument is passed to a method that does not accept it. & throw new \seqsplit{ArgumentNullException("paramName");} \tn % Row Count 13 (+ 5) % Row 3 \SetRowColor{white} \seqsplit{ArgumentOutOfRangeException} & Thrown when an argument is outside the range of valid values. & throw new \seqsplit{ArgumentOutOfRangeException("paramName");} \tn % Row Count 18 (+ 5) % Row 4 \SetRowColor{LightBackground} \seqsplit{InvalidOperationException} & Thrown when a method call is invalid for the object's current state. & throw new \seqsplit{InvalidOperationException("message");} \tn % Row Count 23 (+ 5) % Row 5 \SetRowColor{white} \seqsplit{IndexOutOfRangeException} & Thrown when an index is outside the bounds of an array or collection. & throw new \seqsplit{IndexOutOfRangeException("message");} \tn % Row Count 28 (+ 5) % Row 6 \SetRowColor{LightBackground} \seqsplit{FileNotFoundException} & Thrown when an attempt to access a file that does not exist on disk is made. & throw new \seqsplit{FileNotFoundException("message"}, \seqsplit{innerException);} \tn % Row Count 34 (+ 6) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.9 cm} x{2.888 cm} x{2.812 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{Errors (cont)}} \tn % Row 7 \SetRowColor{LightBackground} \seqsplit{IOException} & Base class for exceptions that occur during I/O operations. & catch (IOException ex) \tn % Row Count 4 (+ 4) % Row 8 \SetRowColor{white} \seqsplit{NullReferenceException} & Thrown when there is an attempt to dereference a null object reference. & throw new \seqsplit{NullReferenceException("message");} \tn % Row Count 9 (+ 5) % Row 9 \SetRowColor{LightBackground} \seqsplit{OverflowException} & Thrown when an arithmetic, casting, or conversion operation in a checked context overflows. & throw new \seqsplit{OverflowException("message");} \tn % Row Count 16 (+ 7) % Row 10 \SetRowColor{white} \seqsplit{FormatException} & Thrown when the format of an argument is invalid, e.g., parsing numbers. & throw new \seqsplit{FormatException("message");} \tn % Row Count 21 (+ 5) % Row 11 \SetRowColor{LightBackground} \seqsplit{UnauthorizedAccessException} & Thrown when the operating system denies access to a file or directory. & throw new \seqsplit{UnauthorizedAccessException("message");} \tn % Row Count 26 (+ 5) % Row 12 \SetRowColor{white} \seqsplit{NotSupportedException} & Thrown when a method or operation is not supported. & throw new \seqsplit{NotSupportedException("message");} \tn % Row Count 30 (+ 4) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.9 cm} x{2.888 cm} x{2.812 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{Errors (cont)}} \tn % Row 13 \SetRowColor{LightBackground} \seqsplit{DivideByZeroException} & Thrown when there is an attempt to divide an integer by zero. & throw new \seqsplit{DivideByZeroException("message");} \tn % Row Count 5 (+ 5) % Row 14 \SetRowColor{white} \seqsplit{TimeoutException} & Thrown when an operation exceeds the allotted time. & throw new \seqsplit{TimeoutException("message");} \tn % Row Count 9 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{List}} \tn % Row 0 \SetRowColor{LightBackground} List\textless{}Type\textgreater{} listName = new List\textless{}T\textgreater{}(); & Declares a new list. \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} listName.Count & Gets the number of elements contained in the List\textless{}T\textgreater{}. \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} listName.Add(T); & Adds an object to the end of the List\textless{}T\textgreater{}. \tn % Row Count 8 (+ 3) % Row 3 \SetRowColor{white} listName.Clear(); & Removes all elements from the List\textless{}T\textgreater{}. \tn % Row Count 11 (+ 3) % Row 4 \SetRowColor{LightBackground} \seqsplit{listName.Contains(T);} & Determines whether an element is in the List\textless{}T\textgreater{}. \tn % Row Count 14 (+ 3) % Row 5 \SetRowColor{white} \seqsplit{listName.Equals(Object);} & Determines whether the specified object is equal to the current object. \tn % Row Count 18 (+ 4) % Row 6 \SetRowColor{LightBackground} \seqsplit{listName.IndexOf(T);} & Searches for the specified object and returns the zero-based index of the first occurrence within the entire List\textless{}T\textgreater{}. \tn % Row Count 24 (+ 6) % Row 7 \SetRowColor{white} listName.Remove(T); & Removes the first occurrence of a specific object from the List\textless{}T\textgreater{}. \tn % Row Count 28 (+ 4) % Row 8 \SetRowColor{LightBackground} \seqsplit{listName.RemoveAt(Int32);} & Removes the element at the specified index of the List\textless{}T\textgreater{}. \tn % Row Count 31 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.12 cm} x{4.88 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Arrays}} \tn % Row 0 \SetRowColor{LightBackground} Initializing array & int{[}{]} numbers = \{ 1, 2, 3, 4, 5 \}; \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Accessing element & int firstNumber = numbers{[}0{]}; // 1 \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} Modifying element & numbers{[}0{]} = 10; // \{ 10, 2, 3, 4, 5 \} \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} For Loop & for (int i = 0; i \textless{} numbers.Length; i++) \{\{\{nl\}\} ~~Console.WriteLine(numbers{[}i{]}); \{\{nl\}\}\} \tn % Row Count 11 (+ 5) % Row 4 \SetRowColor{LightBackground} Foreach Loop & foreach (int number in numbers) \{\{\{nl\}\} \seqsplit{~~Console.WriteLine(number);} \{\{nl\}\}\} \tn % Row Count 15 (+ 4) % Row 5 \SetRowColor{white} Index of Element & int index = Array.IndexOf(numbers, 3); // 2 \tn % Row Count 17 (+ 2) % Row 6 \SetRowColor{LightBackground} Element based on condition & int foundNumber = Array.Find(numbers, n =\textgreater{} n \textgreater{} 2); // 10 \tn % Row Count 20 (+ 3) % Row 7 \SetRowColor{white} Sorting & Array.Sort(numbers); // \{ 2, 3, 4, 10, 50 \} \tn % Row Count 22 (+ 2) % Row 8 \SetRowColor{LightBackground} Reverse & Array.Reverse(numbers); // \{ 50, 10, 4, 3, 2 \} \tn % Row Count 24 (+ 2) % Row 9 \SetRowColor{white} Copy & Array.Copy(numbers, copy, numbers.Length); // copy = \{ 50, 10, 4, 3, 2 \} \tn % Row Count 27 (+ 3) % Row 10 \SetRowColor{LightBackground} Clear & Array.Clear(numbers, 0, numbers.Length); // \{ 0, 0, 0, 0, 0 \} \tn % Row Count 30 (+ 3) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{3.12 cm} x{4.88 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Arrays (cont)}} \tn % Row 11 \SetRowColor{LightBackground} Resize & Array.Resize(ref numbers, 7); // \{ 0, 0, 0, 0, 0, 0, 0 \} \tn % Row Count 3 (+ 3) % Row 12 \SetRowColor{white} ToList & List\textless{}int\textgreater{} numbersList = numbers.ToList(); \tn % Row Count 5 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.4 cm} x{5.6 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{LINQ}} \tn % Row 0 \SetRowColor{LightBackground} Where & var evenNumbers = numbers.Where(n =\textgreater{} n \% 2 == 0); \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Select & var squares = numbers.Select(n =\textgreater{} n * n); \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} OrderBy & var sortedNumbers = numbers.OrderBy(n =\textgreater{} n); \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} \seqsplit{OrderByDescending} & var sortedNumbersDesc = \seqsplit{numbers.OrderByDescending(n} =\textgreater{} n); \tn % Row Count 9 (+ 3) % Row 4 \SetRowColor{LightBackground} ThenBy & var sortedPeople = people.OrderBy(p =\textgreater{} p.LastName).ThenBy(p =\textgreater{} p.FirstName); \tn % Row Count 12 (+ 3) % Row 5 \SetRowColor{white} \seqsplit{ThenByDescending} & var sortedPeopleDesc = people.OrderBy(p =\textgreater{} \seqsplit{p.LastName).ThenByDescending(p} =\textgreater{} p.FirstName); \tn % Row Count 16 (+ 4) % Row 6 \SetRowColor{LightBackground} GroupBy & var groupedByAge = people.GroupBy(p =\textgreater{} p.Age); \tn % Row Count 18 (+ 2) % Row 7 \SetRowColor{white} Join & var joinQuery = customers.Join(orders, customer =\textgreater{} customer.Id, order =\textgreater{} order.CustomerId, (customer, order) =\textgreater{} new \{ customer.Name, order.OrderId \}); \tn % Row Count 24 (+ 6) % Row 8 \SetRowColor{LightBackground} GroupJoin & var groupJoinQuery = \seqsplit{customers.GroupJoin(orders}, customer =\textgreater{} customer.Id, order =\textgreater{} order.CustomerId, (customer, orders) =\textgreater{} new \{ customer.Name, Orders = orders \}); \tn % Row Count 30 (+ 6) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{2.4 cm} x{5.6 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{LINQ (cont)}} \tn % Row 9 \SetRowColor{LightBackground} SelectMany & var allOrders = customers.SelectMany(c =\textgreater{} c.Orders); \tn % Row Count 2 (+ 2) % Row 10 \SetRowColor{white} Take & var firstThreeNumbers = numbers.Take(3); \tn % Row Count 4 (+ 2) % Row 11 \SetRowColor{LightBackground} Skip & var allButFirstThreeNumbers = numbers.Skip(3); \tn % Row Count 6 (+ 2) % Row 12 \SetRowColor{white} TakeWhile & var takeWhileQuery = numbers.TakeWhile(n =\textgreater{} n \textless{} 5); \tn % Row Count 8 (+ 2) % Row 13 \SetRowColor{LightBackground} SkipWhile & var skipWhileQuery = numbers.SkipWhile(n =\textgreater{} n \textless{} 5); \tn % Row Count 10 (+ 2) % Row 14 \SetRowColor{white} Distinct & var distinctNumbers = numbers.Distinct(); \tn % Row Count 12 (+ 2) % Row 15 \SetRowColor{LightBackground} Union & var unionQuery = \seqsplit{numbers1.Union(numbers2);} \tn % Row Count 14 (+ 2) % Row 16 \SetRowColor{white} Intersect & var intersectQuery = \seqsplit{numbers1.Intersect(numbers2);} \tn % Row Count 16 (+ 2) % Row 17 \SetRowColor{LightBackground} Except & var exceptQuery = \seqsplit{numbers1.Except(numbers2);} \tn % Row Count 18 (+ 2) % Row 18 \SetRowColor{white} Concat & var concatQuery = \seqsplit{numbers1.Concat(numbers2);} \tn % Row Count 20 (+ 2) % Row 19 \SetRowColor{LightBackground} Any & bool hasEvenNumbers = numbers.Any(n =\textgreater{} n \% 2 == 0); \tn % Row Count 22 (+ 2) % Row 20 \SetRowColor{white} All & bool allPositive = numbers.All(n =\textgreater{} n \textgreater{} 0); \tn % Row Count 24 (+ 2) % Row 21 \SetRowColor{LightBackground} Contains & bool containsNumber = numbers.Contains(5); \tn % Row Count 26 (+ 2) % Row 22 \SetRowColor{white} First & int firstNumber = numbers.First(); \tn % Row Count 28 (+ 2) % Row 23 \SetRowColor{LightBackground} \seqsplit{FirstOrDefault} & int firstOrDefaultNumber = \seqsplit{numbers.FirstOrDefault();} \tn % Row Count 30 (+ 2) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{2.4 cm} x{5.6 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{LINQ (cont)}} \tn % Row 24 \SetRowColor{LightBackground} Last & int lastNumber = numbers.Last(); \tn % Row Count 2 (+ 2) % Row 25 \SetRowColor{white} \seqsplit{LastOrDefault} & int lastOrDefaultNumber = numbers.LastOrDefault(); \tn % Row Count 4 (+ 2) % Row 26 \SetRowColor{LightBackground} Single & int singleNumber = numbers.Single(n =\textgreater{} n == 5); \tn % Row Count 6 (+ 2) % Row 27 \SetRowColor{white} \seqsplit{SingleOrDefault} & int singleOrDefaultNumber = \seqsplit{numbers.SingleOrDefault(n} =\textgreater{} n == 5); \tn % Row Count 9 (+ 3) % Row 28 \SetRowColor{LightBackground} Count & int count = numbers.Count(); \tn % Row Count 10 (+ 1) % Row 29 \SetRowColor{white} Sum & int sum = numbers.Sum(); \tn % Row Count 11 (+ 1) % Row 30 \SetRowColor{LightBackground} Average & double average = numbers.Average(); \tn % Row Count 13 (+ 2) % Row 31 \SetRowColor{white} Min & int min = numbers.Min(); \tn % Row Count 14 (+ 1) % Row 32 \SetRowColor{LightBackground} Max & int max = numbers.Max(); \tn % Row Count 15 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{1.216 cm} x{3.192 cm} x{3.192 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{DateTime}} \tn % Row 0 \SetRowColor{LightBackground} Now & Gets the current date and time. & DateTime now = DateTime.Now;    // e.g., "2024-07-28 14:35:00" \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \seqsplit{UtcNow} & Gets the current date and time in Coordinated Universal Time (UTC). & DateTime utcNow = \seqsplit{DateTime.UtcNow;}    // e.g., "2024-07-28 18:35:00" \tn % Row Count 9 (+ 5) % Row 2 \SetRowColor{LightBackground} Today & Gets the current date with the time component set to 00:00:00. & DateTime today = DateTime.Today;    // e.g., "2024-07-28 00:00:00" \tn % Row Count 14 (+ 5) % Row 3 \SetRowColor{white} Date & Gets the date component of the DateTime instance. & DateTime date = now.Date;    // e.g., "2024-07-28 00:00:00" \tn % Row Count 18 (+ 4) % Row 4 \SetRowColor{LightBackground} Day & Gets the day of the month represented by the DateTime instance. & int day = now.Day;    // e.g., 28 \tn % Row Count 22 (+ 4) % Row 5 \SetRowColor{white} Month & Gets the month component of the DateTime instance. & int month = now.Month;    // e.g., 7 \tn % Row Count 26 (+ 4) % Row 6 \SetRowColor{LightBackground} Year & Gets the year component of the DateTime instance. & int year = now.Year;    // e.g., 2024 \tn % Row Count 30 (+ 4) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.216 cm} x{3.192 cm} x{3.192 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{DateTime (cont)}} \tn % Row 7 \SetRowColor{LightBackground} Hour & Gets the hour component of the DateTime instance. & int hour = now.Hour;    // e.g., 14 \tn % Row Count 4 (+ 4) % Row 8 \SetRowColor{white} \seqsplit{Minute} & Gets the minute component of the DateTime instance. & int minute = now.Minute;    // e.g., 35 \tn % Row Count 8 (+ 4) % Row 9 \SetRowColor{LightBackground} \seqsplit{Second} & Gets the second component of the DateTime instance. & int second = now.Second;    // e.g., 0 \tn % Row Count 12 (+ 4) % Row 10 \SetRowColor{white} \seqsplit{DayOfWeek} & Gets the day of the week represented by the DateTime instance. & DayOfWeek dayOfWeek = now.DayOfWeek;    // e.g., \seqsplit{DayOfWeek.Sunday} \tn % Row Count 17 (+ 5) % Row 11 \SetRowColor{LightBackground} \seqsplit{DayOfYear} & Gets the day of the year represented by the DateTime instance. & int dayOfYear = now.DayOfYear;    // e.g., 210 \tn % Row Count 21 (+ 4) % Row 12 \SetRowColor{white} \seqsplit{AddDays} & Adds the specified number of days to the DateTime instance. & DateTime futureDate = now.AddDays(5);    // e.g., "2024-08-02 14:35:00" \tn % Row Count 26 (+ 5) % Row 13 \SetRowColor{LightBackground} \seqsplit{AddMonths} & Adds the specified number of months to the DateTime instance. & DateTime futureDate = \seqsplit{now.AddMonths(1);}    // e.g., "2024-08-28 14:35:00" \tn % Row Count 31 (+ 5) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.216 cm} x{3.192 cm} x{3.192 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{DateTime (cont)}} \tn % Row 14 \SetRowColor{LightBackground} \seqsplit{AddYears} & Adds the specified number of years to the DateTime instance & DateTime futureDate = \seqsplit{now.AddYears(1);}    // e.g., "2025-07-28 14:35:00" \tn % Row Count 5 (+ 5) % Row 15 \SetRowColor{white} \seqsplit{AddHours} & Adds the specified number of hours to the DateTime instance. & DateTime futureDate = \seqsplit{now.AddHours(5);}    // e.g., "2024-07-28 19:35:00" \tn % Row Count 10 (+ 5) % Row 16 \SetRowColor{LightBackground} \seqsplit{AddMinutes} & Adds the specified number of minutes to the DateTime instance. & DateTime futureDate = \seqsplit{now.AddMinutes(30);}    // e.g., "2024-07-28 15:05:00" \tn % Row Count 15 (+ 5) % Row 17 \SetRowColor{white} \seqsplit{AddSeconds} & Adds the specified number of seconds to the DateTime instance. & DateTime futureDate = \seqsplit{now.AddSeconds(30);}    // e.g., "2024-07-28 14:35:30" \tn % Row Count 20 (+ 5) % Row 18 \SetRowColor{LightBackground} \seqsplit{AddMilliseconds} & Adds the specified number of milliseconds to the DateTime instance. & DateTime futureDate = \seqsplit{now.AddMilliseconds(500);}    // e.g., "2024-07-28 14:35:00.500" \tn % Row Count 26 (+ 6) % Row 19 \SetRowColor{white} \seqsplit{AddTicks} & Adds the specified number of ticks to the DateTime instance. & DateTime futureDate = \seqsplit{now.AddTicks(1000000);}    // e.g., "2024-07-28 \seqsplit{14:35:00.0001000"} \tn % Row Count 32 (+ 6) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.216 cm} x{3.192 cm} x{3.192 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{DateTime (cont)}} \tn % Row 20 \SetRowColor{LightBackground} \seqsplit{Subtract} & Subtracts the specified date and time from this instance. & TimeSpan duration = \seqsplit{now.Subtract(pastDate);}    // e.g., "2.00:00:00" (2 days) \tn % Row Count 5 (+ 5) % Row 21 \SetRowColor{white} \seqsplit{ToString} & Converts the value of the DateTime instance to its equivalent string representation. & string str = \seqsplit{now.ToString("yyyy-MM-dd} HH:mm:ss");    // "2024-07-28 14:35:00" \tn % Row Count 11 (+ 6) % Row 22 \SetRowColor{LightBackground} Parse & Converts the string representation of a date and time to its DateTime equivalent. & DateTime dt = \seqsplit{DateTime.Parse("2024-07-28} 14:35:00"); \tn % Row Count 17 (+ 6) % Row 23 \SetRowColor{white} \seqsplit{TryParse} & Converts the string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded. & bool success = \seqsplit{DateTime.TryParse("2024-07-28} 14:35:00", out DateTime dt); \tn % Row Count 27 (+ 10) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{p{1.44 cm} x{6.56 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Variables}} \tn % Row 0 \SetRowColor{LightBackground} int & int myNum = 5; \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} double & double myDoubleNum = 5.99D; \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} char & char myLetter = 'D'; \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} bool & bool myBool = true; \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} string & string myText = "Hello"; \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} float & float value = 6.3F; \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.76 cm} x{4.24 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Naming Conventions}} \tn % Row 0 \SetRowColor{LightBackground} Class & MyClass \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Method & MyMethod \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} Local Variable & myLocalVariable \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} Private Variable & \_myPrivateVariable \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} Constant & MyConstant \tn % Row Count 5 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{p{0.8 cm} x{7.2 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Assignemnt}} \tn % Row 0 \SetRowColor{LightBackground} = & Simple assignment. \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} += & Addition assignment. \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} -= & Subtraction assignment. \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} *= & Multiplication assignment. \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} /= & Division assignment. \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} \%= & Remainder assignment. \tn % Row Count 6 (+ 1) % Row 6 \SetRowColor{LightBackground} \&\& & AND assignment. \tn % Row Count 7 (+ 1) % Row 7 \SetRowColor{white} || & OR assignment. \tn % Row Count 8 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Exception Handling}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{try \{\{\{nl\}\} ~~// code that might throw an exception \{\{nl\}\}\} \{\{nl\}\}catch (Exception ex) \{\{\{nl\}\} ~~// handle exception \} \{\{nl\}\}finally \{\{\{nl\}\} ~~// cleanup code \{\{nl\}\}\}} \tn % Row Count 5 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Conditions}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{if (condition) \{ \{\{nl\}\}// if the condition is True \{\{nl\}\}\} \{\{nl\}\} else \{\{\{nl\}\} // if the condition is False \{\{nl\}\}\}} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{switch(expression) \{ \{\{nl\}\} ~~case x: \{\{nl\}\}~~~// code block \{\{nl\}\}~~~~break; \{\{nl\}\}~~case y: \{\{nl\}\}~~~// code block \{\{nl\}\}~~~break; \{\{nl\}\}~~default: \{\{nl\}\}~~// code block \{\{nl\}\}~~~break; \{\{nl\}\}\}} \tn % Row Count 10 (+ 7) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{while (condition) \{ \{\{nl\}\} ~~// code block to be executed \{\{nl\}\}\}} \tn % Row Count 12 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{foreach (type variableName in arrayName) \{ \{\{nl\}\} ~~// code block to be executed \{\{nl\}\}\}} \tn % Row Count 15 (+ 3) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{for (int i = 0; i \textless{} 5; i++) \{ \{\{nl\}\} ~~Console.WriteLine(i); \{\{nl\}\}\}} \tn % Row Count 17 (+ 2) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{do \{...\} while (true);} \tn % Row Count 18 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Commenting}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{// Single-Line Comment} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{/* Multiple-Line Comment */} \tn % Row Count 2 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Comparision}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\textless{}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{\textless{}} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\textless{}=} \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{\textgreater{}=} \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{==} \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{!=} \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Type Conversions}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ToBoolean} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{ToByte} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ToChar} \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{ToDateTime} \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ToDecimal} \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{ToDouble} \tn % Row Count 6 (+ 1) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ToInt64} \tn % Row Count 7 (+ 1) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{ToInt32} \tn % Row Count 8 (+ 1) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ToInt16} \tn % Row Count 9 (+ 1) % Row 9 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{ToSbyte} \tn % Row Count 10 (+ 1) % Row 10 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ToSingle} \tn % Row Count 11 (+ 1) % Row 11 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{ToString} \tn % Row Count 12 (+ 1) % Row 12 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ToType} \tn % Row Count 13 (+ 1) % Row 13 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{ToUInt16} \tn % Row Count 14 (+ 1) % Row 14 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ToUInt32} \tn % Row Count 15 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{1.36 cm} x{6.64 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Modifiers}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{abstract} & abstract class Shape \{ ... \} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} async & private async void Task() \{ ... \} \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} const & const int X = 0; \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} event & public event SampleEventHandler SampleEvent; \tn % Row Count 6 (+ 2) % Row 4 \SetRowColor{LightBackground} \seqsplit{delegate} & public delegate void \seqsplit{SampleEventHandler(object} sender, SampleEventArgs e; \tn % Row Count 9 (+ 3) % Row 5 \SetRowColor{white} new & public Random random = new Random(); \tn % Row Count 11 (+ 2) % Row 6 \SetRowColor{LightBackground} \seqsplit{override} & public override void ToString() \{ ... \} \tn % Row Count 13 (+ 2) % Row 7 \SetRowColor{white} \seqsplit{readonly} & private readonly int value = 6; \tn % Row Count 15 (+ 2) % Row 8 \SetRowColor{LightBackground} \seqsplit{static} & static int = 7; \tn % Row Count 16 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{1.36 cm} x{6.64 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Other Operators}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{sizeof()} & Returns the size of a data type \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \seqsplit{typeof()} & Returns the type of a class \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \& & Returns the address of a variable \tn % Row Count 5 (+ 1) % Row 3 \SetRowColor{white} * & Pointer to a variable \tn % Row Count 6 (+ 1) % Row 4 \SetRowColor{LightBackground} ? : & Conditional expression \tn % Row Count 7 (+ 1) % Row 5 \SetRowColor{white} is & Determines whether an object is of a specific type \tn % Row Count 9 (+ 2) % Row 6 \SetRowColor{LightBackground} as & Cast without raising an exception if the cast fails \tn % Row Count 11 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Inheritance}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{public class Animal \{\{\{nl\}\} ~~public virtual void MakeSound() \{\{\{nl\}\} \seqsplit{~~~Console.WriteLine("Some} sound"); \{\{nl\}\}~~ \} \{\{nl\}\}\} \{\{nl\}\}public class Dog : Animal \{ \{\{nl\}\} ~~public override void MakeSound() \{\{\{nl\}\} ~~~ Console.WriteLine("Bark");\{\{nl\}\} ~~ \} \{\{nl\}\}\}} \tn % Row Count 8 (+ 8) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.04 cm} x{4.96 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Webstorm}} \tn % Row 0 \SetRowColor{LightBackground} Double Shift & Search Everywhere Quickly find any file, action, class, symbol, tool window, or setting in WebStorm, in your project, and in the current Git repository. \tn % Row Count 7 (+ 7) % Row 1 \SetRowColor{white} Ctrl Shift A & Find Action Find a command and execute it, open a tool window, or search for a setting. \tn % Row Count 11 (+ 4) % Row 2 \SetRowColor{LightBackground} Double Ctrl & Run Anything Launch run/debug configurations, run npm and yarn scripts, and reopen recent projects. \tn % Row Count 16 (+ 5) % Row 3 \SetRowColor{white} AltEnter & Show Context Actions Quick-fixes for highlighted errors and warnings, intention actions for improving and optimizing your code. \tn % Row Count 22 (+ 6) % Row 4 \SetRowColor{LightBackground} F2 or Shift F2 & Navigate between code issues Jump to the next or previous highlighted error. \tn % Row Count 26 (+ 4) % Row 5 \SetRowColor{white} Ctrl E & View recent files Select a recently opened file from the list. \tn % Row Count 29 (+ 3) % Row 6 \SetRowColor{LightBackground} Ctrl W or Ctrl Shift W & Extend or shrink selection Increase or decrease the scope of selection according to specific code constructs. \tn % Row Count 34 (+ 5) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{3.04 cm} x{4.96 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Webstorm (cont)}} \tn % Row 7 \SetRowColor{LightBackground} Ctrl / or Ctrl Shift / & Add/remove line or block comment Comment out a line or block of code. \tn % Row Count 3 (+ 3) % Row 8 \SetRowColor{white} Alt F7 & Find Usages Show all places where a code element is used across your project. \tn % Row Count 7 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}