Cara bekerja dengan struktur di C #

Walaupun terdapat banyak persamaan antara kelas dan struktur, terdapat juga beberapa perbezaan yang berbeza. Yang paling penting, struktur tidak seperti kelas, adalah jenis nilai. Jadi, semasa contoh kelas disimpan di timbunan, contoh struktur disimpan di timbunan.

Apabila contoh struktur diteruskan ke suatu metode, ia selalu diteruskan dengan nilai. Ini berbeza dengan apa yang berlaku ketika kita menyampaikan contoh kelas ke suatu kaedah - contoh tersebut diteruskan dengan rujukan.

Struktur pengaturcaraan dalam C #

Begini sintaksis untuk menyatakan struktur.

struct

{

//Data members and member functions of the struct

}

The following code snippet shows how a typical struct definition looks like.

struct Rectangle

    {

        public int width;

        public int height;

    }

Anda kini boleh memberikan nilai kepada anggota struktur yang telah anda tentukan sebelumnya seperti yang ditunjukkan dalam coretan kod di bawah.

Rectangle rectangle = new Rectangle();

rectangle.width = 10;

rectangle.height = 15;

Coretan kod di atas membuat contoh struktur Rectangle dan memberikan nilai kepada anggota awamnya. Perhatikan bahawa anda boleh mempunyai data dan kaedah ahli dalam struktur. Anda juga boleh menentukan ahli sebagai peribadi, awam dan dalaman. Perlu diingatkan bahawa tidak seperti kelas, anda tidak boleh mempunyai inisialisasi bidang untuk bidang tidak statik dalam struktur. Oleh itu, pernyataan seperti berikut dalam struktur tidak sah.

int width = 10;

int height = 15;

Anda boleh memulakan ahli statik dalam struktur anda pula. Oleh itu, berikut adalah pernyataan yang sah di dalam struktur.

static int area = 0;

Mari sekarang tambahkan beberapa kaedah untuk struktur. Berikut adalah versi kemas kini struktur Rectangle yang kami buat sebelumnya. Perhatikan penggunaan konstruktor parameter.

struct Rectangle

    {

        int width;

        int height;

        public Rectangle(int width, int height)

        {

            this.width = width;

            this.height = height;

        }

        public int GetArea()

        {

            return this.width * this.height;

        }

    }

Perhatikan bahawa walaupun struktur tidak membenarkan anda menentukan konstruktor tanpa parameter eksplisit di dalamnya, anda sentiasa boleh mempunyai pembina parameter di dalam struktur. Juga, serupa dengan kelas, anda juga boleh mempunyai pembina yang terlalu banyak dalam struktur. Inilah caranya anda dapat menetapkan nilai menggunakan konstruktor Strect Rectangle dan kemudian mendapatkan kawasan tersebut dengan menggunakan kaedah GetArea (). Perlu diingatkan bahawa serupa dengan kelas, anda boleh mempunyai kaedah statik dan tidak statik di dalam struktur.

static void Main(string[] args)

        {

            Rectangle rectangle = new Rectangle(10, 15);

            int area = rectangle.GetArea();

            Console.WriteLine("The area is: " + area.ToString());

            Console.Read();

        }

Seperti kelas, struktur memberikan sokongan untuk sifat dan pengindeks. Satu perbezaan utama antara struktur dan kelas adalah bahawa tidak seperti kelas, struktur tidak menyokong warisan - anda tidak boleh mempunyai struktur yang memanjangkan kelas lain atau struktur. Walau bagaimanapun, serupa dengan kelas, struct dapat melaksanakan antara muka. Inilah contoh kod yang menggambarkan perkara ini.

 interface IRectangle

    {

        int GetArea();

    }

  struct Rectangle : IRectangle

    {

        int width;

        int height;

        public Rectangle(int width, int height)

        {

            this.width = width;

            this.height = height;

        }

        public int GetArea()

        {

            return this.width * this.height;

        }

    }

Memilih antara kelas dan struktur

Sekarang kita sampai pada titik perbahasan yang menarik. Bilakah kita harus menggunakan struktur di atas kelas dan sebaliknya?

Seperti yang telah kita bahas sebelumnya dalam artikel ini, contoh struktur dibuat di tumpukan sementara contoh kelas dibuat di timbunan terkelola. Peruntukan dan penyahpindahan jenis nilai lebih murah daripada jenis rujukan. Struktur adalah pilihan yang baik apabila anda perlu membuat jenis data komposit yang dapat memuat beberapa anggota data. Sebaik-baiknya, ukuran anggota data struktur mestilah kurang dari 16 bait. Anda boleh memilih struktur apabila anda ingin membina struktur data komposit kecil yang mempunyai nilai semantik dan hanya mengandungi beberapa anggota data. Dalam menggunakan struktur dalam kes seperti itu, anda dapat mengelakkan overhead yang berkaitan dengan pengumpulan sampah.

Anda harus mengikuti amalan terbaik yang disyorkan semasa bekerja dengan struktur. Anda harus mengelakkan penggunaan struktur dengan ukuran lebih besar daripada yang disarankan dalam artikel ini. Juga, perhatikan bahawa menyampaikan contoh struktur ke kaedah lebih mahal dari segi prestasi daripada melewati contoh kelas. Sebaiknya gunakan struktur semasa anda bekerja dengan struktur data kecil. Anda boleh mengetahui lebih lanjut mengenai topik ini dari artikel MSDN ini.