Cara Using Structs C# Asp.Net


Tipe data struct cocok untuk mewakili objek ringan seperti Point, Rectangle, dan Color.

Meskipun sama mudahnya untuk mewakili sebuah titik sebagai class dengan Auto-Implemented Properties, struct mungkin lebih efisien dalam beberapa skenario.

Sebagai contoh, jika kita mendeklarasikan array dari 1000 objek Point, kita akan mengalokasikan memori tambahan untuk referensi masing-masing objek; Dalam hal ini, struct akan lebih murah.

Karenana .NET Framework berisi sebuah objek bernama Point, struct dalam contoh ini dinamai "CoOrds".
public struct CoOrds
{
    public int x, y;
    public CoOrds(int p1, int p2)
    {
        x = p1;
        y = p2;
    }
}
Ini adalah kesalahan untuk menentukan konstruktor default (parameterless) untuk struct.

Ini juga merupakan kesalahan untuk menginisialisasi bidang instance dalam struct body.

Kita dapat menginisialisasi member struct hanya dengan menggunakan konstruktor parameterized atau dengan mengakses anggota secara terpisah setelah struct dinyatakan.

Anggotata pribadi atau anggota yang tidak dapat diakses hanya dapat diinisialisasi dalam konstruktor.

Bila kita membuat objek struct menggunakan operator baru, maka akan dibuat dan konstruktor yang tepat dipanggil.

Tidak seperti class, struct bisa di instantiasi tanpa menggunakan operator baru. Dalam kasus seperti itu, tidak ada panggilan konstruktor, yang membuat alokasi lebih efisien.

Namun, ladang akan tetap tidak ditugaskan dan objek tidak dapat digunakan sampai semua bidang diinisialisasi.

Bila struct berisi tipe referensi sebagai anggota, konstruktor default anggota harus dipanggil secara eksplisit, jika tidak, anggota tetap tidak ditugaskan dan struct tidak dapat digunakan.

(Ini menghasilkan kesalahan kompilator CS0171.) Tidak ada warisan untuk struct karena ada untuk class.

Sebuah struct tidak dapat mewarisi dari struct atau class lain, dan itu tidak bisa menjadi basis class.

Struktur, bagaimanapun, mewarisi dari objek class dasar. Sebuah struct dapat mengimplementasikan antarmuka, dan hal itu sama seperti class.

Kita tidak dapat mendeklarasikan class menggunakan struct kata kunci. Dalam C #, class dan struct secara semantis berbeda. Sebuah struct adalah tipe nilai, sedangkan class adalah tipe referensi.

Untuk informasi lebih lanjut, lihat value type. Kecuali kita memerlukan semantik tipe referensi, class kecil mungkin lebih efisien ditangani oleh sistem jika kita menyatakannya sebagai struct.

  • Contoh 1


Contoh ini menunjukkan inisialisasi struct menggunakan konstruktor default dan parameterized.
public struct CoOrds
{
    public int x, y;

    public CoOrds(int p1, int p2)
    {
        x = p1;
        y = p2;
    }
}

// Declare and initialize struct objects.
class TestCoOrds
{
    static void Main()
    {
        // Initialize:   
        CoOrds coords1 = new CoOrds();
        CoOrds coords2 = new CoOrds(10, 10);

        // Display results:
        Console.Write("CoOrds 1: ");
        Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y);

        Console.Write("CoOrds 2: ");
        Console.WriteLine("x = {0}, y = {1}", coords2.x, coords2.y);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
/* Output:
    CoOrds 1: x = 0, y = 0
    CoOrds 2: x = 10, y = 10
*/

  • Contoh 2

Contoh ini menunjukkan fitur yang unik untuk struct. Ini menciptakan objek CoOrds tanpa menggunakan operator new. Jika Anda mengganti kata struct dengan kata class, program tidak akan dikompilasi.
public struct CoOrds
{
    public int x, y;

    public CoOrds(int p1, int p2)
    {
        x = p1;
        y = p2;
    }
}

// Declare a struct object without "new."
class TestCoOrdsNoNew
{
    static void Main()
    {
        // Declare an object:
        CoOrds coords1;

        // Initialize:
        coords1.x = 10;
        coords1.y = 20;

        // Display results:
        Console.Write("CoOrds 1: ");
        Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: CoOrds 1: x = 10, y = 20
Previous
Next Post »