Here are my top basic 12 C# utility Tips & Tricks I usually use when programming daily:

  1. Null-Conditional Operator including chaining:
// Will be null if either `person` or `person.Spouse` are null
int? spouseAge = person?.Spouse?.Age;

You can also provide a fallback or default value:

var parent = person?.Parent?.FirstName ?? "N/A";

2. Printing of a variable, type or member without hard coding:

var myString = "String Contents";
Console.WriteLine(nameof(myString));

3. Print the current method name dynamically:

using System;

public class AClass{
public void Method1{
var currentMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;
Console.WriteLine(currentMethod); // "Method1"
}
}

4. Use of Interpolated strings that can be useful for email templates

Console.WriteLine($@"Testing \n 1 2 {5 - 2}
New line");

Output:
Testing \n 1 2 3
New line

5. Join an array of characters to a single string:

string.Join("", array.ToArray());

6. Date formatting comes in super handy, here’s a list of snippets from the book [1]:

var year = String.Format("{0:y yy yyy yyyy}", dt); // "16 16 2016 2016" year
var month = String.Format("{0:M MM MMM MMMM}", dt); // "8 08 Aug August" month
var day = String.Format("{0:d dd ddd dddd}", dt); // "1 01 Mon Monday" day
var hour = String.Format("{0:h hh H HH}", dt); // "6 06 18 18" hour 12/24
var minute = String.Format("{0:m mm}", dt); // "50 50" minute
var secound = String.Format("{0:s ss}", dt); // "23 23" second
var fraction = String.Format("{0:f ff fff ffff}", dt); // "2 23 230 2300" sec.fraction
var fraction2 = String.Format("{0:F FF FFF FFFF}", dt); // "2 23 23 23" without zeroes
var period = String.Format("{0:t tt}", dt); // "P PM" A.M. or P.M.
var zone = String.Format("{0:z zz zzz}", dt); // "+0 +00 +00:00" time zone

7. Copying arrays — both shallow and deep:

var sourceArray = new int[] { 11, 12, 7 };
var destinationArray = (int)sourceArray.Clone();
//destinationArray will be created and will have 11,12,17.

// deep copy
A[] array2 = array1.Select (a =>(A)a.Clone()).ToArray();

8. Get all members values of an enum:

enum MyEnum
{
One,
Two,
Three
}
foreach(MyEnum e in Enum.GetValues(typeof(MyEnum)))
Console.WriteLine(e);

// Will print
One
Two
Three

Enum equality check:

myname.Equals(Enum.GetName(typeof(Name)))

9. Convert a List to a HashSet:

Checking if an element is present in a HashSet is faster than in a List (0(1) vs 0(n)) esp. with large data sets.

var hashSet = new HashSet<YourType>(yourList);

10. Use of Singleton constructor pattern:

Singleton can be useful when managing access to a resource that is shared across the application and might be costly to have multiple e.g. database connection pool.

public class Singleton
{
public static Singleton Instance { get; } = new Singleton();
private Singleton()
{
// Put custom constructor code here
}
}

11. Simple Object initializers with non-default constructor:

Instead of creating a new class and assigning the properties individually, you can use an initializer.

public class Article {
public string Title { get; set; }
public string Body {get; set; }

public Article(int number)
{
// do stuff here
}
}

var newArticle = new Article(1) { Title = "Article 1", Body = "This is article 1 body" }

12. Named Arguments:

With such arguments, the order you pass them is not essential.

public static string JoinSomething(string left, string right)
{
return string.Join("_", left, right);
}

Console.WriteLine(JoinSomething("left", "right")); // left_right
Console.WriteLine(JoinSomething(right: "right", left: "left")); //left_right

Another popular concept is the use of Extension Methods, which enable you to extend the behaviour of existing classes without modifying the source code or requiring special permissions.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Abdallah Yashir

Abdallah Yashir

17 Followers

Senior Software Developer, Writer, Amateur Photographer, Reader