62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Null-conditional Operator | ||
|  | --- | ||
|  | 
 | ||
|  | # Null-conditional Operator
 | ||
|  | 
 | ||
|  | Null-conditional operators allow for null checking with a minimal amount of code. For example, if you had | ||
|  | an employee variable of type Employee with a property of type Address, you might do null checking as follows: | ||
|  | 
 | ||
|  | ```csharp | ||
|  | Address address = null; | ||
|  | if (employee != null) | ||
|  | { | ||
|  |     address = employee.Address; | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | You could use a standard conditional operator to make that check more concise: | ||
|  | 
 | ||
|  | ```csharp | ||
|  | Address address = employee != null ? employee.Address : null; | ||
|  | ``` | ||
|  | 
 | ||
|  | However, in C# 6.0 null-conditional operators were introduced, so now the above line can simply | ||
|  | be represented as follows: | ||
|  | 
 | ||
|  | ```csharp | ||
|  | Address address = student?.Address; | ||
|  | ``` | ||
|  | 
 | ||
|  | If employee is null, address will simply be assigned null, and no NullReferenceExeception will occur. | ||
|  | This becomes more useful with deeper object graphs, as you can handle a chain of conditional member access. | ||
|  | 
 | ||
|  | For example: | ||
|  | ```csharp | ||
|  | string city = student?.Address?.City; | ||
|  | ``` | ||
|  | 
 | ||
|  | Null-conditional operators are short-circuiting, so as soon as one check of conditional member access | ||
|  | returns null, the rest do not take place. | ||
|  | 
 | ||
|  | # Null-coalescing operator
 | ||
|  | Another useful null-checking option is the null-coalescing operator. It returns the left-hand operand if the operand is not null; otherwise it returns the right hand operand. | ||
|  | 
 | ||
|  | For example: | ||
|  | ```csharp | ||
|  | public string GetStringValue() | ||
|  | { | ||
|  |     return null; | ||
|  | } | ||
|  | 
 | ||
|  | // Display the value of s if s is NOT null. If x IS null, display the string "It was null." | ||
|  | 
 | ||
|  | string x = GetStringValue(); | ||
|  | 
 | ||
|  | Console.WriteLine(x ?? "It was null."); | ||
|  | 
 | ||
|  | // Result: | ||
|  | 
 | ||
|  | "It was null." | ||
|  | ``` |