صباح الخير مش جايلى نوم
المهم زى ماحنا كنا شغالين ال Pointers ليها اهمية غير عادية فى حياة كل مبرمج بال C/C++ ولكن الموضوع غير مؤثر بالدرجة فى ال C# لأنك قليل ماهتحتاج تتعامل مع ال unmanaged code فعلى كل حال تقدر تستخدم ال Pointers فى برنامجك بمجرد إضافة unsafe لل ميثودز ولل Main لأنك هتطبق عليها unsafe code
لاحظ التالى :
1 -
data member عادى جدا ولكنه visible ( لم اطبق مبدأ ال Encapsulation فى الكود لأننا داخل نفس ال كلاس) 
- 2
إستخدام unsafe لأننا عملنا method داخل ال Class بتاخد Pointer ك parameter فلازم تحط unsafe !
3 -
خلقنا 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
بالتوفيق يارجالة

المهم زى ماحنا كنا شغالين ال 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;

- 2
كود:
unsafe static void setValue(int *p)
3 -
كود:
MyClass mc = new MyClass(); Console.WriteLine("The value of x is : {0}", mc.x);
طبعنا قيمة ال mc.x قبل مانعمل اى تعديلات وطلعت 7
ال fixed keyword لازم نستخدمها عشان نعمل pass لل Memory address الخاص ب mc.x لل Pointer
وبعد كدا ارسلنا ال Pointer للميثود setValue اللى بتغير القيمة المخزن فى ال Memory Address اللى بيشير إليه ال Pointer ل 89
ملاحظة -> لما تيجى تعمل Compile إتأكد إن مسموح بإستخدم ال unsafe code فى عملية ال Compile
تقدر تضيفها لل Compiler عن طريق /unsafe
بالتوفيق يارجالة

تعليق