1.24. C # nullable type

发布时间 :2023-10-12 23:00:08 UTC      

1.24.1. 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.

1.24.2. 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:

1.24.3. 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:

1.24.4. 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

Principles, Technologies, and Methods of Geographic Information Systems  102

In recent years, Geographic Information Systems (GIS) have undergone rapid development in both theoretical and practical dimensions. GIS has been widely applied for modeling and decision-making support across various fields such as urban management, regional planning, and environmental remediation, establishing geographic information as a vital component of the information era. The introduction of the “Digital Earth” concept has further accelerated the advancement of GIS, which serves as its technical foundation. Concurrently, scholars have been dedicated to theoretical research in areas like spatial cognition, spatial data uncertainty, and the formalization of spatial relationships. This reflects the dual nature of GIS as both an applied technology and an academic discipline, with the two aspects forming a mutually reinforcing cycle of progress.