Penjelasan Types C# Asp.net



  • Types (Tipe Data), Variables dan Values 


C # adalah strongly-typed language. Setiap variabel dan konstanta memiliki tipe data, seperti halnya setiap ekspresi yang mengevaluasi nilai.

Setiap sign metod menentukan tipe data untuk setiap parameter masukan dan return value. library kelas NET Framework mendefinisikan seperangkat tipe data numerik built-in serta tipe data yang lebih kompleks yang mewakili berbagai macam logical structure, seperti sistem file, koneksi jaringan, koleksi dan array objek, dan tanggal.

Program C # yang khas menggunakan Tipe data dari library kelas serta tipe data yang ditentukan pengguna yang memodelkan konsep yang spesifik untuk domain masalah program.
Informasi yang tersimpan dalam tipe data dapat mencakup hal berikut:

1. Ruang penyimpanan yang dibutuhkan tipe data variabel.
2. Nilai maksimum dan minimum yang dapat diwakilinya.
3. Anggota (metod, fields, events, dan sebagainya) didalam kontent.
4. Base Type yang di Inherits.
5. Lokasi dimana memori untuk variabel akan dialokasikan pada run time.
6. Tipe data operasi yang diizinkan.

Compiler menggunakan informasi tipe data untuk memastikan bahwa semua operasi yang dilakukan dalam kode Anda adalah tipe data yang aman.

Misalnya, jika Anda mendeklarasikan variabel tipe data int, compiler memungkinkan Anda untuk menggunakan variabel sebagai tambahan dan operasi pengurangan.

Jika Anda mencoba melakukan operasi yang sama pada variabel tipe data bool, compiler akan menghasilkan error, seperti yang ditunjukkan pada contoh berikut:
int a = 5;             
int b = a + 2; //OK 

bool test = true;

// Error. Operator '+' cannot be applied to operands of type 'int' and 'bool'. 
int c = a + test;
Menentukan Tipe data dalam Deklarasi Variabel Ketika kita mendeklarasikan variabel atau konstan dalam sebuah program, Anda harus menentukan tipe data atau menggunakan kata kunci var untuk membiarkan compiler menyimpulkan tipe datanya.

Contoh berikut menunjukkan beberapa deklarasi variabel yang menggunakan tipe data numerik built-in dan tipe data user defined types :
// Declaration only
float temperature;
string name;
MyClass myClass;
// Declaration with initializers (four examples): 
char firstLetter = 'C';
var limit = 3;
int[] source = { 0, 1, 2, 3, 4, 5 };
var query = from item in source
            where item <= limit
            select item;
Tipe data dari parameter metode dan return value ditentukan dalam metod sign.

Sign berikut menunjukkan sebuah metode yang membutuhkan int sebagai argumen input dan mengembalikan sebuah string:
public string GetName(int ID)
{
    if (ID < names.Length)
        return names[ID];
    else 
        return String.Empty;
}
private string[] names = { "Spencer", "Sally", "Doug" };
Setelah variabel dideklarasikan, maka tidak dapat dideklarasikan ulang dengan tipe data baru, dan tidak dapat diberi nilai yang tidak sesuai dengan tipe data yang dideklarasikan.

Misalnya, Kita tidak dapat mendeklarasikan int dan kemudian menetapkan nilai Boolean yang true. Namun, nilai dapat dikonversi ke Tipe data lain, misalnya saat ditugaskan ke variabel baru atau dilewatkan sebagai argumen metod.

Konversi tipe data yang tidak menyebabkan kehilangan data dilakukan secara otomatis oleh kompilator. Konversi yang mungkin menyebabkan kehilangan data memerlukan cast di source code.

  • Built-in Types 


C # menyediakan seperangkat standar tipe data numerik built-in untuk mewakili bilangan bulat, nilai floating point, ekspresi Boolean, karakter teks, nilai desimal, dan Tipe data lainnya.

Kita juga built-in string dan tipe objek. Ini tersedia untuk Anda gunakan dalam program C #. Untuk informasi lebih lanjut tentang tipe data built-in, lihat Tabel Referensi untuk Tipe data (Referensi C #).

  • Custom Types 


Kita menggunakan struct, class, interface, dan enum constructs untuk membuat tipe data custom. Framework kelas .NET Library itu sendiri adalah kumpulan tipe data custom yang disediakan oleh Microsoft yang dapat kita gunakan dalam aplikasi Anda sendiri.

Secara default, Tipe data yang paling sering digunakan di library kelas tersedia dalam program C #. Yang lain hanya tersedia bila Anda secara eksplisit menambahkan referensi proyek ke assembly di mana mereka didefinisikan.

Setelah kompilator memiliki referensi ke assembly, kita dapat mendeklarasikan variabel (dan konstanta) dari tipe data yang dideklarasikan di assembly tersebut dalam source code. Untuk informasi lebih lanjut, lihat .NET Framework Class Library.

  • The Common Type System


Penting untuk memahami dua hal mendasar tentang sistem tipe di .NET Framework:
1. Ini mendukung prinsip inheritance. tipe data bisa berasal dari tipe data lain, disebut base type. Tipe data turunan inheritance (dengan beberapa batasan) metod, properti, dan anggota base type lainnya.

Base type pada gilirannya bisa berasal dari tipe data lain, dimana tipe data turunan mewarisi anggota dari kedua base type dalam hirarki pewarisannya.

Semua Tipe data, termasuk tipe numerik built-in seperti Int32 (C # keyword: int), akhirnya diturunkan dari single base type, yaitu Object (C # keyword: object). Hirarki tipe terpadu ini disebut Common Type System (CTS). Untuk informasi lebih lanjut tentang warisan di C #, lihat Warisan (Panduan Pemrograman C #).

2. Setiap tipe data di CTS didefinisikan sebagai value type atau referensi type. Ini mencakup semua type custom di library kelas .NET Framework dan juga tipe data yang kita sendiri buat.

Tipe data yang Anda definisikan dengan menggunakan kata kunci struct adalah value type; semua tipe data numerik built-in adalah struct.

Tipe data yang Anda definisikan dengan menggunakan kata kunci kelas adalah referensi type. Referensi type dan value type memiliki aturan waktu kompilasi yang berbeda, dan perilaku run-time yang berbeda.

  • Value Types


Value Types berasal dari ValueTypes, yang berasal dari Object. Tipe data yang berasal dari ValueType memiliki perilaku khusus di CLR. Variabel value types secara langsung mengandung nilainya, yang berarti bahwa memori dialokasikan secara inline dalam konteks apa pun yang dideklarasikan variabel.

Tidak ada alokasi tumpukan atau pengumpulan context yang terpisah untuk variabel value types. Ada dua kategori tipe nilai: struct dan enum.

Tipe  numerik built-in adalah struct, dan mereka memiliki properti dan metode yang dapat Anda akses:
// Static method on type Byte.
byte b = Byte.MaxValue;
Tapi kita dapat mendeclare dan memberikan nilai kepada mereka seolah-olah mereka tipe non-agregat sederhana:
byte num = 0xA;
int i = 5;
char c = 'Z';

  • Reference Types


Type yang didefinisikan sebagai kelas, delegate, array, atau interface adalah reference type. Pada saat run time, ketika kita mendeklarasikan variabel dari reference type, variabel tersebut berisi nilai null sampai Anda membuat sebuah instance objek secara eksplisit dengan menggunakan operator baru, atau menetapkannya sebagai objek yang telah dibuat di tempat lain dengan menggunakan yang baru, seperti ditunjukkan pada contoh berikut:
MyClass mc = new MyClass();
MyClass mc2 = mc;
Interface harus diinisialisasi bersama dengan objek kelas yang mengimplementasikannya.

Jika MyClass menerapkan IMyInterface, Anda membuat instance dari IMyInterface seperti yang ditunjukkan pada contoh berikut:
IMyInterface iface = new MyClass();
Ketika objek dibuat, memori dialokasikan pada tumpukan yang dikelola, dan variabel hanya menyimpan referensi ke lokasi objek.

Tipe data pada tumpukan yang dikelola membutuhkan overhead baik saat dialokasikan dan kapan mereka direklamasi oleh fungsi pengelolaan memori otomatis CLR, yang dikenal sebagai garbage collection. Namun, garbage collection juga sangat optimal, dan dalam kebanyakan skenario tidak menciptakan masalah kinerja.

Semua array adalah refernce type, bahkan jika elemennya adalah value type. Array secara implisit berasal dari kelas Array, namun kita mendeklarasikan dan menggunakannya dengan sintaks sederhana yang disediakan oleh C #, seperti yang ditunjukkan pada contoh berikut:
// Declare and initialize an array of integers. 
int[] nums = { 1, 2, 3, 4, 5 };

// Access an instance property of System.Array. 
int len = nums.Length;

  • Types of Literal Values 


Dalam C #, nilai literal menerima tipe data dari compiler. kita dapat menentukan bagaimana numerik literal harus diketik dengan menambahkan huruf ke akhir nomor.

Misalnya, untuk menentukan bahwa nilai 4.56 harus diperlakukan sebagai float, tambahkan "f" atau "F" setelah nomor: 4.56f. Jika tidak ada huruf yang ditambahkan, kompiler akan menyimpulkan tipe untuk literal.

Untuk informasi lebih lanjut tentang jenis mana yang dapat ditentukan dengan sufiks huruf, lihat halaman referensi untuk masing-masing jenis dalam Jenis Nilai (C # Reference). Karena literal diketik, dan semua jenis akhirnya diturunkan dari Objek, kita dapat menulis dan mengkompilasi kode seperti berikut ini:
string s = "The answer is " + 5.ToString();
// Outputs: "The answer is 5"
Console.WriteLine(s);

Type type = 12345.GetType();
// Outputs: "System.Int32"
Console.WriteLine(type);

  • Generic Types 


Tipe data dapat dideklarasikan dengan satu atau beberapa parameter tipe data yang berfungsi sebagai placeholder untuk tipe aktual (the concrete type) yang akan diberikan kode klien saat membuat instance dari typesnya.

Tipe data seperti itu disebut tipe generik. Misalnya, .NET Framework type List memiliki satu parameter jenis yang menurut konvensi diberi nama T. Ketika Anda membuat sebuah instance dari tipe tersebut, Anda menentukan jenis objek yang akan berisi List, misalnya string:
List strings = new List();

  • Implicit Types, Anonymous Types, and Nullable Types 


Seperti yang dinyatakan sebelumnya, Anda dapat secara implisit mengetik variabel lokal (tapi bukan member kelas) dengan menggunakan kata Keywords var.

Variabel masih menerima tipe data pada waktu kompilasi, namun tipe datanya disediakan oleh kompilator.

Dalam beberapa kasus, tidak merepotkan untuk membuat tipe data yang dinamai untuk kumpulan nilai terkait sederhana yang tidak ingin Anda simpan atau lewati batas metode di luar. Anda dapat membuat jenis anonim untuk tujuan ini
Previous
Next Post »