In Javascript I can do this:
var myVar = returnNull() || new MyObject();
In C# I am currenly doing this:
var myVar = returnObjec
use ?? operator
foo ?? new Foo();
Or in your case
var myVar = returnObjectOrNull() ?? new MyObject();
The ?? operator is called the null-coalescing operator and is used to define a default value for nullable value types or reference types. It returns the left-hand operand if the operand is not null; otherwise it returns the right operand.
Yes there is, it's called the null coalescing operator:
var myVar = returnObjectOrNull() ?? new MyObject();
Note that this operator will not evaluate the right-hand side if the left-hand side is not null, which means that the above line of code will not create a new MyObject unless it has to.
Here's an example LINQPad program to demonstrate:
void Main()
{
var myVar = returnObjectOrNull() ?? new MyObject();
}
public MyObject returnObjectOrNull()
{
return new MyObject();
}
public class MyObject
{
public MyObject()
{
Debug.WriteLine("MyObject created");
}
}
This will output "MyObject created" once, meaning that there is only one object being created, in the returnObjectOrNull method, not the one in the ??
statement line.
Use the null-coalescing operator:
var myvar = returnObjectOrNull() ?? new MyObject();
You can use ?? Operator (C# Reference) operator like;
var myVar = returnObjectOrNull() ?? new MyObject();
The
??
operator is called the null-coalescing operator and is used to define a default value for nullable value types or reference types. It returns the left-hand operand if the operand is not null; otherwise it returns the right operand.
Use the null coalescing operator
var myVar = returnObjectOrNull();
myVar = myVar ?? new MyObject();