Rumah  >  Artikel  >  pembangunan bahagian belakang  >  C# Nullable

C# Nullable

WBOY
WBOYasal
2024-09-03 15:16:25935semak imbas

Pembolehubah tidak boleh diberikan nilai null dalam C#, jadi untuk mengatasinya, ciri khas disediakan oleh C#, yang memberikan nilai null kepada pembolehubah yang dipanggil jenis nullable, dan ia tidak berfungsi dengan jenis rujukan kerana null nilai sudah ada, ia hanya berfungsi dengan jenis nullable yang merupakan instance System.Nullablestruct di mana T mewakili jenis nilai tidak boleh null seperti jenis Boolean, jenis integer, jenis titik terapung, dsb.

Sintaks:

Nullable<data_type> variable_name = null;

Sintaks di atas mewakili jenis data nullable dalam C#. Kata kunci nullable mewakili jenis nullable yang merupakan contoh System.Nullablestruct di mana T mewakili jenis nilai yang tidak boleh dibatalkan seperti jenis Boolean, jenis integer, jenis titik terapung, dsb. Jenis data mewakili jenis data pembolehubah, di mana variable_name mewakili nama pembolehubah dan nilai nol diberikan kepadanya.

Terdapat juga jalan pintas untuk sintaks ini yang melibatkan? operator bersama-sama dengan jenis data seperti yang dinyatakan di bawah:

data_type? variable_name = null;

Sintaks di atas mewakili jenis data nullable dalam C#. The ? simbol tanda mewakili jenis nullable. Jenis data mewakili jenis data pembolehubah, dengan nama_pembolehubah mewakili nama pembolehubah dan nilai nol diberikan kepadanya.

Ciri-ciri Jenis Nullable dalam C#

  • Nilai jenis nullable tidak boleh diakses secara langsung. Kaedah GetValueOrDefault() digunakan untuk mengekstrak nilai yang diperuntukkan jika ia tidak diperuntukkan kepada null, dan jika ia adalah null, nilai lalai dikembalikan, iaitu sifar.
  • Nilai null boleh diberikan kepada pembolehubah menggunakan jenis nullable tanpa perlu mencipta jenis nullable berdasarkan jenis rujukan.
  • Nilai boleh diberikan kepada jenis boleh batal.
  • Nullable HasValue dan Nullable boleh digunakan untuk menyemak nilai. Jika nilai diberikan kepada objek, benar dikembalikan, dan palsu dikembalikan jika nol diberikan kepada objek. Jika tiada nilai yang diberikan kepada objek, ralat masa kompilasi dibangkitkan.
  • == dan ! operator boleh digunakan dengan jenis nullable.
  • Jika null diperuntukkan kepada jenis nullable, kaedah GetValueOrDefault(T) memberikan nilai yang ditetapkan atau nilai lalai yang diberikan sebagai lalai.
  • Operator penyatuan null (??) juga boleh digunakan untuk menetapkan nilai kepada nilai jenis boleh null.
  • Jenis Nullable Bersarang tidak disokong oleh jenis Nullable.
  • Jenis nullable tidak menyokong jenis var. Pengkompil memberikan ralat masa Kompilasi jika nullable digunakan dengan var.

Kelebihan Jenis Nullable dalam C#

  • Jenis nullable digunakan dalam aplikasi pangkalan data. Jika lajur dalam pangkalan data memerlukan nilai nol, jenis nullable boleh digunakan untuk memberikan nilai null pada lajur.
  • Nilai yang tidak ditentukan boleh diwakili menggunakan jenis boleh null.
  • Nilai null boleh disimpan menggunakan jenis nullable dan bukannya menggunakan jenis rujukan.

Kelas Pembantu Boleh Null

Nilai null adalah lebih rendah daripada sebarang nilai; maka pengendali perbandingan tidak boleh digunakan dengan null, jadi kami menggunakan kelas statik nullable. Ia dianggap sebagai kelas pembantu untuk jenis Nullable. Kelas statik nullable menyediakan kaedah GetUnderlyingType. Argumen jenis bagi jenis nullable dikembalikan melalui kaedah ini.

Menggunakan Jenis Nullable dalam C#

Jenis data primitif ialah jenis nilai, contohnya, nombor. Jenis nilai disimpan dalam tindanan dan dimulakan kepada nilai lalainya secara tersirat oleh rangka kerja .NET, walaupun ia tidak dimulakan secara eksplisit pada masa ia ditakrifkan. Sebagai contoh, nilai integer dimulakan kepada sifar secara lalai; nilai Boolean dimulakan kepada palsu secara lalai dan seterusnya. Begitu juga, semua jenis nilai mewakili nilai lalai. Tiada satu pun daripada mereka boleh mewakili nilai null yang sangat menonjol dalam aplikasi pangkalan data dan yang mewakili null adalah penting dalam aplikasi tersebut. Sebarang nilai yang dipilih untuk mewakili nilai nol mungkin tidak termasuk dalam julat nilai yang dibenarkan untuk jenis data nilai. Sebagai contoh, jika kita memilih -1 untuk mewakili null untuk jenis nilai, -1 mungkin bukan nilai yang dibenarkan untuk jenis data tersebut. Seseorang juga harus memastikan jika nilai tertentu dipilih untuk mewakili nilai nol dalam aplikasi, nilai itu tidak boleh digunakan di tempat lain untuk sebarang tujuan lain merentas aplikasi. Untuk mengatasi masalah ini, jenis nullable disediakan oleh C# 2.0. Struktur Sistem. Nullable adalah seperti berikut, yang boleh digunakan untuk menentukan jenis nullable:

Kod:

namespace System
{
public struct Nullable : System.IComparable, System.INullableValue
{
public Nullable(T value);
public static explicit operator T(T? value);
public static implicit operator T?(T value);
public T Value { get; }
public bool HasValue { get; }
public T GetValueOrDefault();
}
}

Di sini T bermaksud jenis nilai, dan struktur menerima satu parameter. Sebarang nilai boleh ditakrifkan sebagai jenis nullable dengan menggunakan sintaks.

Sintaks:

System.Nullable<data_type> variable_name = null;

Contoh C# Nullable

Berikut adalah contoh yang diberikan di bawah untuk C# Nullable.

Contoh #1

Program C# untuk menggambarkan jenis nullable apabila tiada nilai diberikan kepada pembolehubah

Code:

using System;
public class Geeks {
//Defining Main Method
public static void Main(string[] args)
{
// Nullable type is defined
Nullable<int> a = null;
// We use the method GetValueOrDefault(), the default value is 0
Console.WriteLine(a.GetValueOrDefault());
// Nullable type is defined
int? b = null;
//We use the method GetValueOrDefault(), the default value is 0
Console.WriteLine(b.GetValueOrDefault());
// non-nullable is defined using nullable type syntax
int? a1 = 200;
// We use the method GetValueOrDefault(), the default value is 0 but the value that is assigned to the variable is returned
Console.WriteLine(a1.GetValueOrDefault());
// non-nullable is defined using nullable type syntax
Nullable<int> b1 = 10;
//  We use the method GetValueOrDefault(), the default value is 0 but the value that is assigned to the variable is returned
Console.WriteLine(b1.GetValueOrDefault());
}
}

The output of the above code is shown in the snapshot below:

Output:

C# Nullable

Example #2

C# program using nullable type to illustrate the use of nullable.HasValue method.

Code:

using System;
public class GFG {
//Defining Main Method
public static void Main()
{
// defining the variable m as a nullable type
Nullable<int> m = 100;
// the value of the variable m is checked
Console.WriteLine(m.HasValue);
// defining the variable n as a nullable type and assigned a value to it
Nullable<int> n = null;
// check the value of object
Console.WriteLine(n.HasValue);
}
}

The output of the above code is shown in the snapshot below:

Output:

C# Nullable

Conclusion

In this tutorial, we understand the concept of nullable type in C# through definition and then understand the working of nullable type in C#. Then we understand different C# programs using nullable type and their working with their output snapshots included with the programs’ results.

Atas ialah kandungan terperinci C# Nullable. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Cap masa hingga Tarikh C#Artikel seterusnya:Cap masa hingga Tarikh C#