Bahasa C
Sebuah atribut adalah tag deklaratif yang digunakan untuk menyampaikan informasi ke runtime tentang perilaku berbagai elemen seperti kelas, metode, struktur, enumerator, rakitan, dll. dalam program Anda. Anda dapat menambahkan informasi deklaratif ke program dengan menggunakan atribut. Tag deklaratif digambarkan dengan tanda kurung siku ([ ]) yang ditempatkan di atas elemen yang digunakannya.
Atribut digunakan untuk menambahkan metadata, seperti instruksi compiler dan informasi lain seperti komentar, deskripsi, metode dan kelas ke program. .Net Framework menyediakan dua jenis atribut:yang telah ditentukan sebelumnya atribut dan dibuat khusus atribut.
Sintaks untuk menentukan atribut adalah sebagai berikut
[attribute(positional_parameters, name_parameter = value, ...)] element
Nama atribut dan nilainya ditentukan dalam tanda kurung siku, sebelum elemen tempat atribut diterapkan. Parameter posisi menentukan informasi penting dan parameter nama menentukan informasi opsional.
.Net Framework menyediakan tiga atribut yang telah ditentukan sebelumnya
Atribut yang telah ditentukan sebelumnya AttributeUsage menjelaskan bagaimana kelas atribut khusus dapat digunakan. Ini menentukan jenis item yang atributnya dapat diterapkan.
Sintaks untuk menentukan atribut ini adalah sebagai berikut
[AttributeUsage ( validon, AllowMultiple = allowmultiple, Inherited = inherited )]
Dimana,
Parameter validon menentukan elemen bahasa di mana atribut dapat ditempatkan. Ini adalah kombinasi dari nilai enumerator Target Atribut . Nilai defaultnya adalah AttributeTargets.All .
Parameter allowmultiple (opsional) memberikan nilai untuk AllowMultiple properti dari atribut ini, nilai Boolean. Jika ini benar, atributnya adalah multi guna. Standarnya salah (sekali pakai).
Parameter yang diwarisi (opsional) memberikan nilai untuk Diwariskan properti dari atribut ini, nilai Boolean. Jika benar, atribut diwarisi oleh kelas turunan. Nilai defaultnya salah (tidak diwariskan).
Misalnya,
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
Atribut yang telah ditentukan ini menandai metode bersyarat yang eksekusinya bergantung pada pengidentifikasi prapemrosesan yang ditentukan.
Ini menyebabkan kompilasi bersyarat dari panggilan metode, tergantung pada nilai yang ditentukan seperti Debug atau Jejak . Misalnya, ini menampilkan nilai variabel saat men-debug kode.
Sintaks untuk menentukan atribut ini adalah sebagai berikut
[Conditional( conditionalSymbol )]
Misalnya,
[Conditional("DEBUG")]
Contoh berikut menunjukkan atribut
Demo Langsung#define DEBUG using System; using System.Diagnostics; public class Myclass { [Conditional("DEBUG")] public static void Message(string msg) { Console.WriteLine(msg); } } class Test { static void function1() { Myclass.Message("In Function 1."); function2(); } static void function2() { Myclass.Message("In Function 2."); } public static void Main() { Myclass.Message("In Main function."); function1(); Console.ReadKey(); } }
Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut
In Main function In Function 1 In Function 2
Atribut standar ini menandai entitas program yang tidak boleh digunakan. Ini memungkinkan Anda untuk memberi tahu kompiler untuk membuang elemen target tertentu. Misalnya, ketika metode baru sedang digunakan di kelas dan jika Anda masih ingin mempertahankan metode lama di kelas, Anda dapat menandainya sebagai usang dengan menampilkan pesan bahwa metode baru harus digunakan, bukan metode lama.
Sintaks untuk menentukan atribut ini adalah sebagai berikut
[Obsolete ( message )] [Obsolete ( message, iserror )]
Dimana,
Parameter pesan , adalah string yang menjelaskan alasan mengapa item tersebut usang dan apa yang harus digunakan sebagai gantinya.
Parameter iserror , adalah nilai Boolean. Jika nilainya benar, kompiler harus memperlakukan penggunaan item sebagai kesalahan. Nilai default salah (kompilator menghasilkan peringatan).
Program berikut menunjukkan ini
using System; public class MyClass { [Obsolete("Don't use OldMethod, use NewMethod instead", true)] static void OldMethod() { Console.WriteLine("It is the old method"); } static void NewMethod() { Console.WriteLine("It is the new method"); } public static void Main() { OldMethod(); } }
Saat Anda mencoba mengkompilasi program, kompilator memberikan pesan kesalahan yang menyatakan
Don't use OldMethod, use NewMethod instead
.Net Framework memungkinkan pembuatan atribut khusus yang dapat digunakan untuk menyimpan informasi deklaratif dan dapat diambil pada saat run-time. Informasi ini dapat dikaitkan dengan elemen target apa pun tergantung pada kriteria desain dan kebutuhan aplikasi.
Membuat dan menggunakan atribut khusus melibatkan empat langkah −
Langkah terakhir melibatkan penulisan program sederhana untuk membaca metadata untuk menemukan berbagai notasi. Metadata adalah data tentang data atau informasi yang digunakan untuk mendeskripsikan data lain. Program ini harus menggunakan refleksi untuk mengakses atribut saat runtime. Ini akan kita bahas di bab selanjutnya.
Atribut khusus baru harus diturunkan dari System.Attribute kelas. Misalnya,
//a custom attribute BugFix to be assigned to a class and its members [AttributeUsage( AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute
Dalam kode sebelumnya, kami telah mendeklarasikan atribut khusus bernama DeBugInfo .
Mari kita buat atribut khusus bernama DeBugInfo , yang menyimpan informasi yang diperoleh dengan men-debug program apa pun. Biarkan ia menyimpan informasi berikut
DeBugInfo class memiliki tiga properti pribadi untuk menyimpan tiga informasi pertama dan properti publik untuk menyimpan pesan. Oleh karena itu nomor bug, nama pengembang, dan tanggal peninjauan adalah parameter posisi kelas DeBugInfo dan pesannya adalah parameter opsional atau bernama.
Setiap atribut harus memiliki setidaknya satu konstruktor. Parameter posisi harus melewati konstruktor. Kode berikut menunjukkan DeBugInfo kelas
//a custom attribute BugFix to be assigned to a class and its members [AttributeUsage( AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute { private int bugNo; private string developer; private string lastReview; public string message; public DeBugInfo(int bg, string dev, string d) { this.bugNo = bg; this.developer = dev; this.lastReview = d; } public int BugNo { get { return bugNo; } } public string Developer { get { return developer; } } public string LastReview { get { return lastReview; } } public string Message { get { return message; } set { message = value; } } }
Atribut diterapkan dengan menempatkannya tepat sebelum targetnya
[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")] [DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")] class Rectangle { //member variables protected double length; protected double width; public Rectangle(double l, double w) { length = l; width = w; } [DeBugInfo(55, "Zara Ali", "19/10/2012", Message = "Return type mismatch")] public double GetArea() { return length * width; } [DeBugInfo(56, "Zara Ali", "19/10/2012")] public void Display() { Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); } }
Pada bab berikutnya, kita mengambil informasi atribut menggunakan objek kelas Refleksi.
Bahasa C
Pemecah masalah adalah pekerja yang sangat terampil tetapi menjadi jenis yang semakin langka di dunia kerja. Manajer dari pabrikan besar sering mengalami masalah dalam menemukan pemecah masalah yang memenuhi syarat. Di masa lalu, kursus pelatihan hanya mengajarkan dasar-dasarnya, sedangkan keterampi
Apa itu Hashtable di C#? Tabel hash adalah kumpulan khusus yang digunakan untuk menyimpan item bernilai kunci. Jadi, alih-alih menyimpan hanya satu nilai seperti tumpukan, daftar array, dan antrian, tabel hash menyimpan 2 nilai. 2 nilai ini membentuk elemen tabel hash. Berikut adalah beberapa cont
Mengubah satu tipe data menjadi tipe lain dikenal sebagai tipe casting atau, tipe-konversi. Misalnya, jika Anda ingin menyimpan nilai long ke dalam bilangan bulat sederhana, maka Anda dapat mengetik cast long ke int. Anda dapat mengonversi nilai dari satu jenis ke jenis lainnya secara eksplisit meng
Manajer gudang adalah personel penting untuk bisnis apa pun dengan inventaris, oleh karena itu banyak perusahaan hidup dan mati dengan kekuatan dan kelemahan manajer tersebut. Menemukan orang yang tepat untuk pekerjaan itu mungkin tidak mudah, tetapi sangat penting untuk melakukannya, untuk memastik