تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[توضيح] معاملات لغة السي شارب
#1
[COLOR="#0000FF"]بسم الله الرحمن الرحيم

الهم صل على محمد وآل محمد

السلام عليكم ورحمة الله وبركاته[/COLOR]



--


[COLOR="#8B4513"]في هذه المقالة إن شاء الله

سأقوم بعرض جميع معاملات لغة السي شارب حتى عام 2012 وتوضيحها

واعطاء امثلة عليها ، لتكون المقالة مرجعا عربيا لشرح المعاملات[/COLOR]





--

[COLOR="#FF0000"]المعامل هو كلمة تقوم بعمل محدد .

ابسط مثال هو المعامل ; (الفاصلة المنقطوطة) التي تقوم بإنهاء التعليمة البرمجية[/COLOR]

--




[COLOR="#B22222"]يوجد للسي شارب 8 انواع من المعاملات (15 حسب تصنيف mdsn) :
[/COLOR]
[COLOR="#008080"]
Primary - (معاملات اولية)
Unary - (معاملات احادية)
Shift - (معاملات النقل)
Relational and type testing - (معاملات التحقق)
Equality - (معاملات المساواة)
IF-Operator - (معاملات الشرط)
Null-coalescing - (معامل القيمة الفارغة)
Assignment and lambda expression (معاملات الاسناد ، ومعامل تعبير لامندا)[/COLOR]


[COLOR="#800080"]كل نوع من المعاملات المذكورة فوق تحتوي على معامل واحد او اكثر (قمت بدمج بعض المعاملات في انواع اخرى)

وقمت بتقسيم وشرح المعامل لكل نوع في جدول خاص لتسهيل عرض المعلومات ،

وايضا سأقوم بشرح خاص وعرض بعض الامثلة للمعاملات الغامضة في الرد القادم[/COLOR]

فالانبدأ...

--
--
--



المعاملات الاولية (Primary) :-




--

المعاملات الاحادية (Unary) :-



--

معاملات النقل (Shift) :-



--

معاملات التحقق (Relational and type testing) :-



--

معاملات المساواة (Equality) :-



--


معاملات الشرط (IF-Operator) -بالاضافة للي فوق- :-



--

معاملات القيمة الافتراضية (Null-coalescing) :-



--

معاملات الاسناد ، ومعامل تعبير لامندا (Assignment and lambda expression) :-






--
--
--



في الرد القادم راح اشرح بعض المعاملات المتقدمة (مثل معاملات الshift) وخلافها


يتبع ..
الرد }}}}
تم الشكر بواسطة: نور الدين وليد
#2
مشكوووووووووور
الرد }}}}
تم الشكر بواسطة: نور الدين وليد
#3
توضيح بعض المعاملات :-


[COLOR="#800080"]
typeof : هذا يستعمل لجلب الفئة ك system.type
ونستفيد من هذا الامر في التعامل مع الفئة ومعرفة عنوانها ووو ، مثلا :

PHP كود :
class Temp
        
{
            public static 
void msg(string text) { MessageBox.Show(text); }
        }

        private 
void Form1_Load(object senderEventArgs e)
        {
            
Type t typeof(Temp);

            
object[] parameters = new object[] { "Hello" };
            
t.GetMethod("msg").Invoke(nullparameters);
        } 

تم استدعاء الاجراء msg ضمن فئة Temp




--



checked : يفحص القيم قبل إعطائها للمتغير
فلو كانت القيمة اكبر من حجم المتغير(overflow)
سيحصل إستثناء

في الوضع العادي (بدون checked) عندما يحصل فيضان(overflow) للمتغير
يتم عرض اقصى قيمة يتحملها المتغير وتحويلها للسالب
مثلا :

PHP كود :
int input 10;

           
int result 2147483647 input;

           
MessageBox.Show(result.ToString()); 

ستظهر لك رسالة بقيمة المتغير
ستكون قيمته 2,147,483,639-
لان اكبر قيمة يتحملها int بين موجب 2,147,483,639 وسالب 2,147,483,639-
قمنا باضافة 10 للمتغير فلم يتحمل ذلك وقام بعرض قيمة خاطئة لانريدها

ماذا لو كنا نريد من البرنامج ان يحدث لنا استثنائا ان حصل هذا الامر
عوضا عن عرض قيمة خاطئة !! < فنحن لانريد عرض قيم خاطئة في برامجنا

الحل باستعمال checked

PHP كود :
int input 10;

           try
           {
               
int result checked(2147483647 input);
               
MessageBox.Show(result.ToString());
           }
           catch (
OverflowException ex)
           {
               
MessageBox.Show(ex.Message);
           } 

سيتم عرض استثناء بدل عرض 2,147,483,639-

يمكن استعال checked كا (بلوك) اذا كنا نريد التحقق من اكثر من متغير
مثلا :
PHP كود :
int input 10;
            
int input2 505;

            
checked
            
{
                try
                {
                    
int result 2147483647 input;
                    
MessageBox.Show(result.ToString());
                }
                catch(
OverflowException ex) { MessageBox.Show(ex.Message); }
                try
                {
                    
int result 2147483647 input2;
                    
MessageBox.Show(result.ToString());
                }
                catch (
OverflowException ex) { MessageBox.Show(ex.Message); }
            } 




--



sizeof : يستخدم لمعرفة حجم الانواع
مثلا لمعرفة حجم النوع int :

PHP كود :
MessageBox.Show(sizeof(int).ToString() + " Bytes"); 



--



المعامل * يستخدم لضرب الارقام وتعريف الpointers
مثلا :
PHP كود :
private void Form1_Load(object senderEventArgs e)
        {
            
unsafe
            
{
                
intans = (int*)44;
            }
        } 

--



await : قد شرحها الاستاذ الكبير sajad سابقا على هذا الرابط : هنا
وايضا تستعمل معاها async ولكن لم يذكرها موقع mdsn ك معامل حيث يبدون انها كلمة مفتاحية (keyword) وليست معامل



--



المعامل >> يستخدم لإدراج اصفار على يمين البايت

مثلا :
PHP كود :
int binNum Convert.ToInt32("00000001"2); //00000001 = 1 on decmal
            
binNum binNum << 4//سيتم ادراج 4اصفار على اليمين ليصبح
            //00010000

            
MessageBox.Show(binNum.ToString()); //00010000 = 16 on dec 

والمعامل << يستخدم لإدراج اصفار على يسار البايت



--



is : للتأكد من نوع الكائن
مثلا :

PHP كود :
OpenFileDialog op = new OpenFileDialog();

            if (
op is OpenFileDialog)
            {
                
MessageBox.Show("is openfile dialog");
            }
            else
            {
                
MessageBox.Show("is not openfile dialog");
            } 



--


المعامل :? يستخدم لإرجاع قيمة عند تحقق شرط معين
وإرجاع قيمة اخرى عند عدم تحقق الشرط (شبيهة ب if)

مثلا :-

PHP كود :
string str "ahmed";

            
string result = (str == "ahmed") ? "welcome ahmed xD" "Who are you ??"

سيتم إرجاع who are you اذا كان المتغير str لايساوي ahmed



--



المعامل ?? يستخدم لإرجاع قيمة عندما يكون الكائن فارغ null
ماذا لو كنت تريد ان تخبر المستخدم ان الكائن فارغ فنستعمل هذا المعامل
مثال :
PHP كود :
string op null;

            
MessageBox.Show(op ?? "op is Null!!!"); 

ستظهر رسالة للمستخدم تقول ان op فارغ


ولكن لو اسندنا قيمة
مثال :
PHP كود :
string op null;
            
op "Welcome Mohammed";

            
MessageBox.Show(op ?? "op is Null!!!"); 

لن تظهر op is null لأننا اسندنا قيمة للمتغير op فهو الان ليس null




--




المعامل ? يستخدم لتعريف متغيرات ذات قيمة لكي تدعم القيمة null
فهذا التعبير لايجوز
PHP كود :
int op null

ولكن هذا يجوز :
PHP كود :
intop null

باستعمال هذا المعامل حصلنا على خاصية HasValue التي نستطيع من خلالها معرفة إن كان المتغير null او لا
مثال :

PHP كود :
intop null;

            if (!
op.HasValue)
            {
                
MessageBox.Show("op is null");
            } 
[/COLOR]




--
--
--



[COLOR="#B22222"]إلى هنا أعزائي نصل معكم لآخر المقالة

اتمنى انكم استفدتم من هذه المعلومات المتواضعة

ونلقاكم في مقالات قادمة إن شاء الله[/COLOR]


إنتهى.
الرد }}}}
تم الشكر بواسطة: نور الدين وليد
#4
تم بحمد الله
الرد }}}}
تم الشكر بواسطة: نور الدين وليد
#5
[COLOR="#000000"]الفرق بين & و &&


تسمى & ب Logical AND
فهي تستخدم جدول الحقيقة للحصول على النتيجة

PHP كود :
MessageBox.Show( (true false).ToString() ); //false 

جدول الحقيقة :



فلو قررت استخدامها مع الشروط فلابد للمترجم ان يتحقق من الشرطين للقيام من بعملية Logic and بالاعتماد على جدول الحقيقة :


PHP كود :
if (str1 == 'a' str2 == 'b')
            {
                
//سيتم التحقق من كلا الشرطين حتى لو كان الشرط الاول خاطئا
            



حتى لو الشرط الاول كان خاطئ ، سيتم التحقق من الشرط الثاني . رغم ان ذلك لافائدة منه ولكن طبيعة بوابة AND تفرض ذلك
لانها تأخذ اثنين من الinput



وذلك يعني ان استخدام & ليس جيدا مع الشروط لأنه سيقوم بالتحقق من جميع الشروط
وهذا سأخذ وقتا على الفاضي + ممكن حصول استثناء

-
الاستخدام الافضل ل& هو لعمل And لمجموعة من البايتات
مثلا :
PHP كود :
int num1 Convert.ToInt32("01111011"2);
            
int num2 Convert.ToInt32("00101010"2);

            
int result num1 num2;  //00101010 

شاهد الصورة :


-

فالبديل استخدام && مع الشروط وهي ماتسمى ب Conditional And وهي لاتستعمل جدول الحقيقةف

فهي خاصة للشروط ، فإذا كان الشرط الاول خاطئا لن يتم التحقق من الشرط الثاني



--
--
--


نفس الشيئ يحدث ل | و ||

Logic OR هي | وتستعمل جدول الحقيقة التالي :



و || هي التي تستخدم مع الشروط وتسمى Conditional OR
فإذا تحقق الشرط الاول لاحاجة لفحص الشرط الثاني


[/COLOR]
الرد }}}}


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [C#.NET] مقدمة في سي شارب 7 الإصدار الجديد C# 7 Features Previewed balugili 0 170 05-10-16, 03:04 AM
آخر رد: balugili
  [ 6.#C] - الجديد في سي شارب 6 الشاكي لله 2 369 02-06-16, 11:17 AM
آخر رد: CLARO
  [C#.NET] تحميل فيجوال سي شارب Omar 6.0 0 198 18-02-16, 06:45 PM
آخر رد: Omar 6.0
  dynamic كلمة مفتاحية جديدة في السي شارب Sajad 3 792 25-05-13, 01:01 PM
آخر رد: shaker.soft
  الأعداد الضخمة BigInteger في سي شارب (جديد دوت نت 4) RaggiTech 0 522 11-10-12, 05:01 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم