Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Peng-overloading Operator dalam C# untuk Tipe Kustom

Anda dapat mendefinisikan ulang atau overload sebagian besar operator bawaan yang tersedia dalam C#. Dengan demikian, programmer dapat menggunakan operator dengan tipe yang ditentukan pengguna juga. Operator yang di-overload adalah fungsi dengan nama khusus kata kunci operator diikuti oleh simbol operator yang didefinisikan. Mirip dengan fungsi lain, operator yang di-overload memiliki tipe pengembalian dan daftar parameter.

Contohnya, periksa fungsi berikut:

public static Box operator+ (Box b, Box c) { Box box = new Box(); box.length = b.length + c.length; box.breadth = b.breadth + c.breadth; box.height = b.height + c.height; return box; }

Fungsi di atas mengimplementasikan operator penambahan (+) untuk kelas yang ditentukan pengguna Box. Ini menambahkan atribut dari dua objek Box dan mengembalikan objek Box yang dihasilkan.

Mengimplementasikan Operator Overloading

Program berikut menunjukkan implementasi lengkapnya:

Live Demo
using System; namespace OperatorOvlApplication { class Box { private double length; // Panjang kotak private double breadth; // Lebar kotak private double height; // Tinggi kotak public double getVolume() { return length * breadth * height; } public void setLength( double len ) { length = len; } public void setBreadth( double bre ) { breadth = bre; } public void setHeight( double hei ) { height = hei; } // Overload + operator untuk menambahkan dua objek Box. public static Box operator+ (Box b, Box c) { Box box = new Box(); box.length = b.length + c.length; box.breadth = b.breadth + c.breadth; box.height = b.height + c.height; return box; } } class Tester { static void Main(string[] args) { Box Box1 = new Box(); // Deklarasi Box1 tipe Box Box Box2 = new Box(); // Deklarasi Box2 tipe Box Box Box3 = new Box(); // Deklarasi Box3 tipe Box double volume = 0.0; // Simpan volume kotak di sini // spesifikasi kotak 1 Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // spesifikasi kotak 2 Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); // volume kotak 1 volume = Box1.getVolume(); Console.WriteLine("Volume of Box1 : {0}", volume); // volume kotak 2 volume = Box2.getVolume(); Console.WriteLine("Volume of Box2 : {0}", volume); // Tambahkan dua objek sebagai berikut: Box3 = Box1 + Box2; // volume kotak 3 volume = Box3.getVolume(); Console.WriteLine("Volume of Box3 : {0}", volume); Console.ReadKey(); } } }

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah:

Volume of Box1 : 210 Volume of Box2 : 1560 Volume of Box3 : 5400

Operator yang Dapat dan Tidak Dapat Di-overload

Tabel berikut menjelaskan kemampuan overload dari operator dalam C#:

No. Operator & Deskripsi
1

+, -, !, ~, ++, --

Operator unary ini mengambil satu operand dan dapat di-overload.

2

+, -, *, /, %

Operator biner ini mengambil satu operand dan dapat di-overload.

3

==, !=, <, >, <=, >=

Operator perbandingan dapat di-overload.

4

&&, ||

Operator logika kondisional tidak dapat di-overload secara langsung.

5

+=, -=, *=, /=, %=

Operator penugasan tidak dapat di-overload.

6

=, ., ?:, ->, new, is, sizeof, typeof

Operator ini tidak dapat di-overload.

Contoh

Dalam rangkaian diskusi di atas, mari kita perpanjang contoh sebelumnya, dan overload beberapa operator lainnya:

Live Demo
using System; namespace OperatorOvlApplication { class Box { private double length; // Panjang kotak private double breadth; // Lebar kotak private double height; // Tinggi kotak public double getVolume() { return length * breadth * height; } public void setLength( double len ) { length = len; } public void setBreadth( double bre ) { breadth = bre; } public void setHeight( double hei ) { height = hei; } // Overload + operator untuk menambahkan dua objek Box. public static Box operator+ (Box b, Box c) { Box box = new Box(); box.length = b.length + c.length; box.breadth = b.breadth + c.breadth; box.height = b.height + c.height; return box; } public static bool operator == (Box lhs, Box rhs) { bool status = false; if (lhs.length == rhs.length && lhs.height == rhs.height && lhs.breadth == rhs.breadth) { status = true; } return status; } public static bool operator !=(Box lhs, Box rhs) { bool status = false; if (lhs.length != rhs.length || lhs.height != rhs.height || lhs.breadth != rhs.breadth) { status = true; } return status; } public static bool operator <(Box lhs, Box rhs) { bool status = false; if (lhs.length < rhs.length && lhs.height < rhs.height && lhs.breadth < rhs.breadth) { status = true; } return status; } public static bool operator >(Box lhs, Box rhs) { bool status = false; if (lhs.length > rhs.length && lhs.height > rhs.height && lhs.breadth > rhs.breadth) { status = true; } return status; } public static bool operator <=(Box lhs, Box rhs) { bool status = false; if (lhs.length <= rhs.length && lhs.height <= rhs.height && lhs.breadth <= rhs.breadth) { status = true; } return status; } public static bool operator >=(Box lhs, Box rhs) { bool status = false; if (lhs.length >= rhs.length && lhs.height >= rhs.height && lhs.breadth >= rhs.breadth) { status = true; } return status; } public override string ToString() { return String.Format("({0}, {1}, {2})", length, breadth, height); } } class Tester { static void Main(string[] args) { Box Box1 = new Box(); // Deklarasi Box1 tipe Box Box Box2 = new Box(); // Deklarasi Box2 tipe Box Box Box3 = new Box(); // Deklarasi Box3 tipe Box Box Box4 = new Box(); double volume = 0.0; // Simpan volume kotak di sini // spesifikasi kotak 1 Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // spesifikasi kotak 2 Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); //menampilkan Boxes menggunakan ToString yang di-overload: Console.WriteLine("Box 1: {0}", Box1.ToString()); Console.WriteLine("Box 2: {0}", Box2.ToString()); // volume kotak 1 volume = Box1.getVolume(); Console.WriteLine("Volume of Box1 : {0}", volume); // volume kotak 2 volume = Box2.getVolume(); Console.WriteLine("Volume of Box2 : {0}", volume); // Tambahkan dua objek sebagai berikut: Box3 = Box1 + Box2; Console.WriteLine("Box 3: {0}", Box3.ToString()); // volume kotak 3 volume = Box3.getVolume(); Console.WriteLine("Volume of Box3 : {0}", volume); //membandingkan kotak if (Box1 > Box2) Console.WriteLine("Box1 is greater than Box2"); else Console.WriteLine("Box1 is not greater than Box2"); if (Box1 < Box2) Console.WriteLine("Box1 is less than Box2"); else Console.WriteLine("Box1 is not less than Box2"); if (Box1 >= Box2) Console.WriteLine("Box1 is greater or equal to Box2"); else Console.WriteLine("Box1 is not greater or equal to Box2"); if (Box1 <= Box2) Console.WriteLine("Box1 is less or equal to Box2"); else Console.WriteLine("Box1 is not less or equal to Box2"); if (Box1 != Box2) Console.WriteLine("Box1 is not equal to Box2"); else Console.WriteLine("Box1 is not greater or equal to Box2"); Box4 = Box3; if (Box3 == Box4) Console.WriteLine("Box3 is equal to Box4"); else Console.WriteLine("Box3 is not equal to Box4"); Console.ReadKey(); } } }

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah:

Box 1: (6, 7, 5) Box 2: (12, 13, 10) Volume of Box1 : 210 Volume of Box2 : 1560 Box 3: (18, 20, 15) Volume of Box3 : 5400 Box1 is not greater than Box2 Box1 is less than Box2 Box1 is not greater or equal to Box2 Box1 is less or equal to Box2 Box1 is not equal to Box2 Box3 is equal to Box4

Bahasa C

  1. Operator C# – Panduan Lengkap tentang Operator dalam C#
  2. Operator Ternary C#: Panduan Ringkas untuk Ekspresi Kondisional
  3. Menguasai Overloading Metode dalam C#: Konsep, Contoh, dan Praktik Terbaik
  4. Menguasai Overloading Konstruktor dalam C#
  5. Menguasai Operator Overloading di Python: Panduan Praktis
  6. Operator instanceof Java: Panduan Lengkap
  7. Robot Kotak CD DIY Terinspirasi Wall‑E dengan Raspberry Pi
  8. Pemeliharaan yang Melibatkan Operator: Apakah Keuntungan Melebihi Biaya Tersembunyi?
  9. Pengoverloadan Operator C++ – Panduan Praktis dengan Contoh Kode
  10. Menguasai Overloading C++: Fungsi & Operator Dijelaskan