إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

Unsafe code

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • Unsafe code

    صباح الخير مش جايلى نوم

    المهم زى ماحنا كنا شغالين ال Pointers ليها اهمية غير عادية فى حياة كل مبرمج بال C/C++ ولكن الموضوع غير مؤثر بالدرجة فى ال C# لأنك قليل ماهتحتاج تتعامل مع ال unmanaged code فعلى كل حال تقدر تستخدم ال Pointers فى برنامجك بمجرد إضافة unsafe لل ميثودز ولل Main لأنك هتطبق عليها unsafe code


    كود:
    using System;
    class MyClass  //simple class with a data member x (no need to encapsulate it.
    {
      public int x = 7;
    }
    
    class Program
    {
    	unsafe static void setValue(int *p)  //unsafe to use pointers.
    	{
    		*p = 89 ;
    	}
    	unsafe public static void Main(string[] args)
    		/* as long as we use pointers the Main is unsafe */
    		
    	{
    		MyClass mc = new MyClass();
    		Console.WriteLine("The value of x is : {0}", mc.x);
    		
    		fixed(int *p = &mc.x)  // If there's no lake in memory the do the following
    		{
    			setValue(p); //passing the value of *p to mc.x 
    		}
    		Console.WriteLine("The value of x now is : {0}", mc.x);
    		Console.Read();
    	}
    }
    لاحظ التالى :
    1 -
    كود:
      public int x = 7;
    data member عادى جدا ولكنه visible ( لم اطبق مبدأ ال Encapsulation فى الكود لأننا داخل نفس ال كلاس)
    - 2
    كود:
    unsafe static void setValue(int *p)
    إستخدام unsafe لأننا عملنا method داخل ال Class بتاخد Pointer ك parameter فلازم تحط unsafe !

    3 -

    كود:
    		MyClass mc = new MyClass();
    		Console.WriteLine("The value of x is : {0}", mc.x);
    خلقنا object mcمن ال Class اللى عرفناه بإسم MyClass

    طبعنا قيمة ال mc.x قبل مانعمل اى تعديلات وطلعت 7

    ال fixed keyword لازم نستخدمها عشان نعمل pass لل Memory address الخاص ب mc.x لل Pointer

    وبعد كدا ارسلنا ال Pointer للميثود setValue اللى بتغير القيمة المخزن فى ال Memory Address اللى بيشير إليه ال Pointer ل 89

    ملاحظة -> لما تيجى تعمل Compile إتأكد إن مسموح بإستخدم ال unsafe code فى عملية ال Compile
    تقدر تضيفها لل Compiler عن طريق /unsafe


    بالتوفيق يارجالة

    التعديل الأخير تم بواسطة StrikerX; الساعة 09-06-2007, 10:57 PM.
    Programming-Fr34ks[dot]NET
    Ma Weblog
    ابدأ بتعلم Python | Ruby
    كتاب البايثون متوافر الآن
    لا اتواجد بهذا المنتدى ... للإتصال

  • #2
    شكـرا Striker مع تحفظي بالطبع علي لغه الـ C#

    تعليق


    • #3

      c with another flavor
      BOOOF , I AM GONE
      Still , you gotta wait for my PRESENT :D
      C programming arabic Tutorial|Programming-fr34ks

      تعليق


      • #4
        المشاركة الأصلية بواسطة Mutati0N مشاهدة المشاركة
        شكـرا Striker مع تحفظي بالطبع علي لغه الـ C#
        عفوا ياباشا منور


        المشاركة الأصلية بواسطة St0rM-MaN مشاهدة المشاركة

        c with another flavor
        ههههههههههههه طب ياخويا ربنا معاك
        Programming-Fr34ks[dot]NET
        Ma Weblog
        ابدأ بتعلم Python | Ruby
        كتاب البايثون متوافر الآن
        لا اتواجد بهذا المنتدى ... للإتصال

        تعليق


        • #5
          يسلم ايديك يا باشا.. ^_^
          GCS

          تعليق

          يعمل...
          X