C# Struct vs Class

WBOY
WBOYasal
2024-09-03 15:07:59784semak imbas

Seperti namanya, C# menggunakan kata kunci 'struct' untuk menentukan jenis nilai, dan Kelas menggunakan kata kunci 'class' untuk menentukan jenis rujukan. Dalam C#, pembolehubah yang ditakrifkan dalam struktur disimpan dalam tindanan atau dalam jenis pembolehubah yang diberikan dan kejadian dipanggil sebagai pembolehubah struktur. Manakala, untuk 'kelas' keadaan dipanggil sebagai objek dan disimpan dalam unit memori berstruktur timbunan. Dari segi pembina dan pemusnah, C# struct tidak boleh mempunyai pemusnah, tetapi Kelas boleh mempunyai pemusnah. Pengelasan ahli dibenarkan dalam Kelas, seperti jenis abstrak, maya dan dilindungi.

Perbandingan Head to Head Antara C# Struct vs Class (Infografik)

Di bawah ialah 14 perbezaan teratas antara C# Struct vs Class.

C# Struct vs Class

Perbezaan Utama Antara C# Struct vs Class

Beberapa perbezaan utama antara C# Struct dan Class adalah seperti berikut:

  1. Sesuatu struct boleh diisytiharkan menggunakan kata kunci 'struct' manakala kelas boleh diisytiharkan menggunakan kata kunci 'class'.
  2. Struktur ialah jenis nilai oleh itu pembolehubah jenis struct secara langsung terdiri daripada data struct manakala kelas ialah jenis rujukan dan pembolehubah jenis kelas terdiri daripada rujukan kepada data, yang kami panggil objek kelas.
  3. Pembolehubah jenis kelas diperuntukkan dalam timbunan dan boleh dikumpul sampah manakala pembolehubah jenis struct diperuntukkan sama ada dalam tindanan atau sebaris dalam jenis yang mengandungi.
  4. Objek kelas dicipta menggunakan kata kunci 'baru' manakala objek struktur boleh dibuat dengan atau tanpa kata kunci 'baru'. Menghidupkan struct tanpa menggunakan operator 'baharu' tidak membenarkan pengguna mengakses kaedah, sifat atau acaranya.
  5. Setiap pembolehubah dalam struct mengandungi salinan datanya (kecuali ref dan pembolehubah parameter keluar) supaya pengubahsuaian yang dilakukan pada satu pembolehubah tidak menjejaskan pembolehubah lain manakala dalam kelas dua atau lebih pembolehubah boleh merujuk kepada objek yang sama dan sebarang pengubahsuaian yang dilakukan pada satu pembolehubah boleh mempengaruhi pembolehubah yang lain. Kita boleh memahami perkara ini dengan contoh di bawah.

Contoh menggunakan struct

Kod:

using System;
namespace structAndClass
{
//creating structure
public struct Demo
{
public int x, y;
//parameterized constructor
public Demo(int x, int y)
{
this.x = x;
this.y = y;
}
}
public class StructDemo
{
public static void Main(string[] args)
{
Demo a = new Demo(50, 50);
Demo b = a;
a.x = 100;
Console.WriteLine("Value of a.x = "+a.x);
Console.WriteLine("Value of b.x = "+b.x);
}
}
}

Output:

C# Struct vs Class

Contoh menggunakan kelas

Kod:

using System;
namespace structAndClass
{
public class Demo
{
public int x, y;
public Demo(int x, int y)
{
this.x = x;
this.y = y;
}
}
public class StructDemo
{
public static void Main(string[] args)
{
Demo a = new Demo(50, 50);
Demo b = a;
a.x = 100;
Console.WriteLine("Value of a.x = "+a.x);
Console.WriteLine("Value of b.x = "+b.x);
}
}
}

Output:

C# Struct vs Class

  1. Peruntukan dan nyah peruntukan memori untuk jenis struct adalah lebih murah daripada jenis kelas.
  2. Struktur tidak boleh mempunyai pembina contoh tanpa parameter, ia boleh mempunyai pembina berparameter atau statik manakala kelas boleh mempunyai pembina tanpa parameter lalai di dalamnya.
  3. Struktur tidak boleh mempunyai pemusnah manakala kelas boleh mempunyai pemusnah.
  4. Kita tidak boleh mewarisi struct daripada struct atau kelas lain dan ia tidak boleh menjadi asas kelas manakala kita boleh mewarisi kelas daripada kelas lain dan kelas boleh menjadi asas kelas lain. Oleh itu, kelas menyokong warisan manakala struktur tidak menyokong warisan.
  5. Kami tidak boleh menentukan ahli struktur sebagai abstrak, maya atau dilindungi manakala kelas boleh menetapkan ahlinya sebagai abstrak, maya atau dilindungi.
  6. Instance kelas dipanggil objek manakala contoh struktur dipanggil pembolehubah struktur.
  7. Jika kami tidak menentukan sebarang penentu akses maka ahli kelas adalah peribadi secara lalai manakala ahli struktur akan terbuka secara lalai.
  8. Kelas digunakan untuk struktur data yang kompleks manakala struktur digunakan untuk struktur data yang kecil.

C# Struct vs Jadual Perbandingan Kelas

Mari kita lihat beberapa lagi perbezaan antara C# Struct vs Class melalui jadual perbandingan untuk pemahaman yang jelas:

Parameter C# Struct Class
Data type The structure is a value type of data type. Class is a reference type data type.
Keyword The structure can be defined using the ‘struct’ keyword. The class can be defined using the ‘class’ keyword.
Storage area The structure variable is stored either in stack or inline in containing type. The object of the class is stored in heap.
Instance creation The instance of a struct can be created with or without a ‘new’ keyword. The instance of the class is created using a ‘new’ keyword.
Assignment If we make an assignment to a variable of struct type then it creates a copy of the value being assigned. Thus, each variable instructs has its copy of data. If we make an assignment to a variable of class type then it copies the reference. Thus, two or more variables in class can refer to the same object.
Constructor The structure does not contain a parameterless instance constructor. The class contains a parameterless instance constructor, if not defined explicitly by the user.
Destructor It cannot have a destructor. It can have a destructor.
Inheritance The structure cannot inherit from another class or structure.

The structure cannot be used as a base for another structure or class.

The class can inherit from another class. The class can be a base class for another class.
Data members Members of a struct cannot be abstract, virtual or protected. Members of a class can be abstract, virtual or protected.
Instance The instance of the structure is called the structure variable. The instance of the class is called an object.
Default access specifier Members of the structure are public by default. Members of the class are private by default.
Usage The structure can be used for small data structures. Class is used for the complex data structure.
Garbage collection The instance of a struct cannot be garbage collected. The instance of the class can be garbage collected.
Variable initializing Including variable initializer is not allowed while making instance field declarations instruct. Including variable initializer is allowed while making instance field declarations in a class.

Kesimpulan

Kedua-dua kelas dan struktur digunakan untuk menyimpan item data berkaitan. Kita boleh menggunakan kelas untuk sejumlah besar data dan boleh menggunakan struktur untuk data kecil. Kelas adalah jenis rujukan dan disimpan dalam timbunan manakala struktur adalah jenis nilai dan disimpan dalam tindanan.

Atas ialah kandungan terperinci C# Struct vs Class. 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:String vs String C#Artikel seterusnya:String vs String C#