أساسيات البرمجة سي شارب مشغل الحمل الزائد C# - Operator Overloading
أساسيات البرمجة مشغل الحمل الزائد C# - Operator Overloading
الحمل الزائد للمشغل:-
المشغل Operator هو الاداة التي تستخدم في العمليات الحسابية او المنطقية الي اخره من المشغلات او المعاملات.الحمل الزائد يعني اعادة تعريف المشغل مع قيم مختلفة من الوسطاء اوالباراميترات.الحمل الزائد للمشغل يجب ان يستخدم الكلمة المحجوزة Static.
مثال على تطبيق الحمل الزائد للمشغل الجمع(+).
using System; namespace OperatorOvlApplication { class Box { private double length; // طول الصندوق private double breadth; // عرض الصندوق private double height; // ارتفاع الصندوق 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; } // الحمل الزائد لمشغل الجمع لجمع الصندوق 1 +2 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(); // الاعلان عن الصندوق1 مننوع صندوق Box Box2 = new Box(); //الاعلان عن الصندوق2 من نوع صندوق Box Box3 = new Box(); //الاعلان عن الصندوق3 من نوع صندوق double volume = 0.0; // لتخزين قيمة حجم الصندوق // تفاصيل الصندوق1 Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // تفاصيل الصندوق2 Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); // حساب حجم الصندوق1 volume = Box1.getVolume(); Console.WriteLine("Volume of Box1 : {0}", volume); //حساب حجم الصندوق2 volume = Box2.getVolume(); Console.WriteLine("Volume of Box2 : {0}", volume); // جمع الصندوق 1 و الصندق 2 Box3 = Box1 + Box2; // حجم الصندوق 3 volume = Box3.getVolume(); Console.WriteLine("Volume of Box3 : {0}", volume); Console.ReadKey(); } } }
ناتج الحمل الزائد للمشغل
Volume of Box1 : 210 Volume of Box2 : 1560 Volume of Box3 : 5400
ليس جميع المشغلات يمكن عمل لها حمل زائد Overloading
الجدول التالي يوضح المشغلات التي يمكن عمل حمل زائد والتي لا يمكن عمل حمل زائد.
المشغل | الحالة |
---|---|
+, -, !, ~, ++, -- | نعم يمكن عمل حمل زائد |
+, -, *, /, % | نعم يمكن عمل حمل زائد |
==, !=, <, >, <=, >= | نعم يمكن عمل حمل زائد |
&&, || | نعم يمكن عمل حمل زائد |
+=, -=, *=, /=, %= | لا يمكن عمل حمل زائد |
=, ., ?:, ->, new, is, sizeof, typeof | لا يمكن عمل حمل زائد |
مثال موسع على الحمل الزائد للمشغلات.
using System; namespace OperatorOvlApplication { class Box { private double length; // طول الصندوق private double breadth; // عرض الصندوق private double height; // ارتفاع الصندوق 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; } // جمعالحمل الزائد للمشغل ال 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(); // التصريح عن الصندوق1 Box Box2 = new Box(); // التصريح عن الصندوق2 Box Box3 = new Box(); // التصرح عن الصندوق3ي Box Box4 = new Box(); double volume = 0.0; // تخزين القيمة // قيم الصندوق1 Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // قيم صندوق2 Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); //طباعة الصندوق Console.WriteLine("Box 1: {0}", Box1.ToString()); Console.WriteLine("Box 2: {0}", Box2.ToString()); // حساب حجم الصندوق 1 volume = Box1.getVolume(); Console.WriteLine("Volume of Box1 : {0}", volume); // حساب حجم الصندوق2 volume = Box2.getVolume(); Console.WriteLine("Volume of Box2 : {0}", volume); // جمع الصندوق1+2 Box3 = Box1 + Box2; Console.WriteLine("Box 3: {0}", Box3.ToString()); // حساب حجم الصندوق3 volume = Box3.getVolume(); Console.WriteLine("Volume of Box3 : {0}", volume); //مقارنة الصناديق if (Box1 > Box2) Console.WriteLine("Box1 is greater than Box2"); else Console.WriteLine("Box1 is 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(); } } }
ناتج الكود السابق
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
Ahmed Ata Almahallawi
Freelancer
IT
IT Help Desk,
SEO experience,PHP,C#,ASPX
SEO experience,PHP,C#,ASPX
Al alami st
gaza -jabalia, Gaza Strip
Palestine
ahmed.almahallawi@gmail.com
DOB: 05/10/1984
by +Ahmed Almahallawi
by +Ahmed Almahallawi
8/12/2013
التسميات: csharp-basic
<< الصفحة الرئيسية