C # nullable type
C# single question mark ?
and double question mark ??
?
single question mark is used for int
、 double
、 bool
and so on, which cannot be directly assigned to null
data type of null
, which means that this data type is Nullable
type.
int? i = 3;
Equivalent to:
Nullable<int> i = new Nullable<int>(3);
int i; //Default value 0
int? ii; //Default value is null
The double question mark ??
is used to determine whether a variable is null
,which returns a specified value.
Next, we will explain in detail.
C # nullable type
C # provides a special data type nullable
type, a nullable type can represent a value within the normal range of its underlying value type, plus a null value.
For example, Nullable< Int32 >
, pronounced “nullable Int32”, can be assigned any value between-2147483648 and 2147483647, or can be assigned to null
Value. Similar Nullable< bool >
Variables can be assigned to true
or false
or null
.
When working with databases and other data types that contain elements that may not be assigned, set the null
ability to assign values to numeric or Boolean types is particularly useful. For example, Boolean fieldsin a database can store values true
or false
, the field can beundefined.
Declare a nullable
syntax for a type (nullable type) is as follows:
< data_type> ? <variable_name> = null;
The following example demonstrates the use of nullable data types:
Example
using System;
namespace CalculatorApplication
{
class NullablesAtShow
{
static void Main(string[] args)
{
int? num1 = null;
int? num2 = 45;
double? num3 = new double?();
double? num4 = 3.14157;
bool? boolval = new bool?();
// Display value
Console.WriteLine("Display values of nullable types: {0}, {1}, {2}, {3}",
num1, num2, num3, num4);
Console.WriteLine("A nullable Boolean value: {0}", boolval);
Console.ReadLine();
}
}
}
When the above code is compiled and executed, it produces the following results:
Display values of nullable types: , 45, , 3.14157
A nullable Boolean value:
The Null merge operator ( ??
)
The merge operator Null
is used to define default values for nullable and reference types. Null
merge operator defines a default value for type conversion in case the value of a nullable type is Null
. Null
merge operator implicitly converts an operand type to an operand ofanother nullable (or non-nullable) value type.
If the value of the first Operand is null
, the operator returns the value of the second operand, otherwise the value of the first operand is returned. The following example demonstrates this:
Example
using System;
namespace CalculatorApplication
{
class NullablesAtShow
{
static void Main(string[] args)
{
double? num1 = null;
double? num2 = 3.14157;
double num3;
num3 = num1 ?? 5.34; // num1 If it is a null value, return 5.34
Console.WriteLine("The value of num3: {0}", num3);
num3 = num2 ?? 5.34;
Console.WriteLine("The value of num3: {0}", num3);
Console.ReadLine();
}
}
}
When the above code is compiled and executed, it produces the following results:
Value of num3: 5.34
Value of num3: 3.14157