Membebani Operator Aritmetika
Definisikan +, -, dan * untuk tipe Anda sendiri.
Membebani Operator Aritmetika adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Mengapa Membebani Operator Aritmetika?
Pembebanan operator memungkinkan tipe buatan Anda sendiri menggunakan simbol yang sudah dikenal seperti +, -, dan *. Untuk tipe yang mirip nilai seperti vektor, uang, atau bilangan kompleks, hal ini membuat kode terbaca seperti matematika, bukan seperti pemanggilan metode.
Sintaks operator +
Operator yang dibebani dideklarasikan sebagai metode public static yang namanya adalah operator diikuti simbol. Setidaknya satu parameter harus bertipe sama dengan tipe yang memuatnya.
using System;
public struct Vector2
{
public int X, Y;
public Vector2(int x, int y) { X = x; Y = y; }
public static Vector2 operator +(Vector2 a, Vector2 b)
=> new Vector2(a.X + b.X, a.Y + b.Y);
public override string ToString() => "(" + X + ", " + Y + ")";
}
public class Program
{
public static void Main()
{
var sum = new Vector2(1, 2) + new Vector2(3, 4);
Console.WriteLine(sum);
}
}Pengurangan dan Perkalian
Anda dapat membebani beberapa operator pada tipe yang sama. Di sini, kita menambahkan pengurangan dan perkalian skalar ke vektor kita.
using System;
public struct Vector2
{
public int X, Y;
public Vector2(int x, int y) { X = x; Y = y; }
public static Vector2 operator -(Vector2 a, Vector2 b)
=> new Vector2(a.X - b.X, a.Y - b.Y);
public static Vector2 operator *(Vector2 a, int k)
=> new Vector2(a.X * k, a.Y * k);
public override string ToString() => "(" + X + ", " + Y + ")";
}
public class Program
{
public static void Main()
{
var v = new Vector2(5, 6) - new Vector2(2, 1);
Console.WriteLine(v);
Console.WriteLine(new Vector2(2, 3) * 4);
}
}Operator Selalu static
Operator yang dibebani harus bersifat static. Operator tersebut tidak bekerja pada this tersembunyi; sebagai gantinya, operand diberikan sebagai parameter eksplisit. Kompilator memetakan simbol ke metode tersebut.
using System;
public struct Money
{
public decimal Amount;
public Money(decimal amount) { Amount = amount; }
public static Money operator +(Money a, Money b)
=> new Money(a.Amount + b.Amount);
public override string ToString() => "$" + Amount;
}
public class Program
{
public static void Main()
{
var total = new Money(10.5m) + new Money(4.25m);
Console.WriteLine(total);
}
}Operator Unary
Operator unary seperti negasi menggunakan satu operand. Bebani operator - dengan satu parameter untuk mendukung ekspresi seperti -v.
using System;
public struct Vector2
{
public int X, Y;
public Vector2(int x, int y) { X = x; Y = y; }
public static Vector2 operator -(Vector2 a)
=> new Vector2(-a.X, -a.Y);
public override string ToString() => "(" + X + ", " + Y + ")";
}
public class Program
{
public static void Main()
{
Console.WriteLine(-new Vector2(3, -7));
}
}Operand dengan Tipe Berbeda
Salah satu operand dapat memiliki tipe yang berbeda. Dengan menyediakan kedua urutan, pengguna dapat menulis ekspresi secara alami dalam kedua bentuk.
using System;
public struct Temperature
{
public double Celsius;
public Temperature(double c) { Celsius = c; }
public static Temperature operator +(Temperature t, double delta)
=> new Temperature(t.Celsius + delta);
public static Temperature operator +(double delta, Temperature t)
=> new Temperature(t.Celsius + delta);
public override string ToString() => Celsius + "C";
}
public class Program
{
public static void Main()
{
Console.WriteLine(new Temperature(20) + 5);
Console.WriteLine(5 + new Temperature(20));
}
}Mengembalikan Nilai Baru
Operator aritmetika seharusnya tidak mengubah operandnya. Operator tersebut menghitung dan mengembalikan nilai baru, sementara nilai asli tetap tidak berubah, seperti yang dilakukan int.
using System;
public struct Vector2
{
public int X, Y;
public Vector2(int x, int y) { X = x; Y = y; }
public static Vector2 operator +(Vector2 a, Vector2 b)
=> new Vector2(a.X + b.X, a.Y + b.Y);
public override string ToString() => "(" + X + ", " + Y + ")";
}
public class Program
{
public static void Main()
{
var a = new Vector2(1, 1);
var b = new Vector2(2, 2);
var c = a + b;
Console.WriteLine("a unchanged: " + a);
Console.WriteLine("result: " + c);
}
}Merangkai Operasi Aritmetika
Karena setiap operator mengembalikan tipe yang sama, ekspresi dapat dirangkai secara alami dan mengikuti prioritas serta asosiativitas yang normal.
using System;
public struct Vector2
{
public int X, Y;
public Vector2(int x, int y) { X = x; Y = y; }
public static Vector2 operator +(Vector2 a, Vector2 b) => new Vector2(a.X + b.X, a.Y + b.Y);
public static Vector2 operator *(Vector2 a, int k) => new Vector2(a.X * k, a.Y * k);
public override string ToString() => "(" + X + ", " + Y + ")";
}
public class Program
{
public static void Main()
{
var result = new Vector2(1, 1) + new Vector2(2, 2) * 3;
Console.WriteLine(result);
}
}Operator pada Kelas
Pembebanan operator juga berfungsi pada kelas, bukan hanya pada struktur. Perhatikan null: operand kelas dapat bernilai null, jadi tambahkan penjagaan jika diperlukan.
using System;
public class Complex
{
public double Re, Im;
public Complex(double re, double im) { Re = re; Im = im; }
public static Complex operator +(Complex a, Complex b)
=> new Complex(a.Re + b.Re, a.Im + b.Im);
public override string ToString() => Re + " + " + Im + "i";
}
public class Program
{
public static void Main()
{
Console.WriteLine(new Complex(1, 2) + new Complex(3, 4));
}
}Tipe Numerik Lengkap
Berikut tipe pecahan kecil dengan penjumlahan. Contoh ini menunjukkan bagaimana pembebanan mengubah tipe ranah menjadi sesuatu yang berperilaku seperti angka bawaan.
using System;
public struct Fraction
{
public int Num, Den;
public Fraction(int num, int den) { Num = num; Den = den; }
public static Fraction operator +(Fraction a, Fraction b)
=> new Fraction(a.Num * b.Den + b.Num * a.Den, a.Den * b.Den);
public override string ToString() => Num + "/" + Den;
}
public class Program
{
public static void Main()
{
Console.WriteLine(new Fraction(1, 2) + new Fraction(1, 3));
}
}Coba Sendiri
Tambahkan penjumlahan dan perkalian skalar ke struktur yang mirip uang, lalu buat ekspresi yang terbaca seperti operasi aritmetika biasa.
using System;
public struct Money
{
public decimal Amount;
public Money(decimal a) { Amount = a; }
public static Money operator +(Money a, Money b) => new Money(a.Amount + b.Amount);
public static Money operator *(Money a, int qty) => new Money(a.Amount * qty);
public override string ToString() => "$" + Amount;
}
public class Program
{
public static void Main()
{
var price = new Money(4.50m);
var total = price * 3 + new Money(2.00m);
Console.WriteLine(total);
}
}Pemeriksaan Singkat
Ingat kembali tanda tangan operator yang dibebani.
Ringkasan
Membebani operator aritmetika membuat tipe yang mirip nilai terbaca seperti matematika.
- Deklarasikan sebagai
public staticdengan kata kuncioperator. - Setidaknya satu parameter harus bertipe sama dengan tipe yang memuatnya.
- Kembalikan nilai baru; jangan pernah mengubah operand.
- Sediakan kedua urutan operand untuk aritmetika dengan tipe campuran.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membebani Operator Aritmetika” gratis?
Ya — teks lengkap “Membebani Operator Aritmetika” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membebani Operator Aritmetika”?
Definisikan +, -, dan * untuk tipe Anda sendiri. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Membebani Operator Aritmetika” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membebani Operator Aritmetika
- Membebani Operator Perbandingan
- Konversi yang Didefinisikan Pengguna
- Praktik Terbaik Pembebanan Operator