منتدى رياض الجنة - Riad Al-Ganah

منتدى رياض الجنة - Riad Al-Ganah (https://montada.khaledbelal.com/index.php)
-   دورة .NET 2008 من منتدى فيجوال بيسك للعرب (https://montada.khaledbelal.com/forumdisplay.php?f=57)
-   -   الدرس الحادي عشر : الأنواع Value والأنواع Reference دورة .net 2008 (https://montada.khaledbelal.com/showthread.php?t=525)

khaledbelal 02-18-2010 08:04 PM

الدرس الحادي عشر : الأنواع Value والأنواع Reference دورة .net 2008
 
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته .

لو عدنا مرة أخرى إلى درس انواع المتغيرات ، سنجد ان معظم انواع البيانات مشتقة من Value Type ، معنى ان هذه الأنواع مشتقة من Value Type ان كل متغير منها يمثل نفسه ، فلو افترضنا مثالاً بالشكل التالي :

C#:
كود PHP:

int x=5;
int y=x;
 
y=18;
 
Console.WriteLine(x);
Console.WriteLine(y); 

VB.net:
كود PHP:

Dim x As Integer 
Dim y 
As Integer 
18 
Console
.WriteLine(x
Console.WriteLine(y



سنجد ان كلاً من x و y له قيمة خاصة به ، برغم اننا ساوينا بينهم في البداية ، السبب اننا في جملة y=x فهم الكومبايلر ان ينشأ متغير y يحصل على قيمة x .

نفس هذا النظام ينطبق على المتغيرات الاساسية ، على ال struct ايضاً ...

الأنواع من نوع Refernce Types مثل ال Class لا ينطبق عليها المثال ، لنفترض مثال السيارة بالشكل التالي :

C#:

كود PHP:

class car
{
int carNumber;
string carName;



VB.net:
كود PHP:

Class car 
  
    
Private carNumber As Integer 
    
    
Private carName As String 
    
End 
Class 

والآن سنكتب نفس المثال السابق مع ال ints ، سيكون المثال بالشكل التالي :

C#:
كود PHP:

Car x = new Car();

x.carNumber=1;
Car y=x;

Console.WriteLine (x==y); 

VB.net:
كود PHP:

Dim x As New Car() 
x.carNumber 
Dim y 
As Car 
Console
.WriteLine(y

لو كنت تظن ان المتغير y يحتوي على نسخة من car يمكنك التعديل عليها فأنت مخطا ، إذ ان المتغير x و y يشيرون لنفس المتغير ، وبالتالي فأي تعديل في احدهما سيتسبب في تعديل للآخر ، يمكنك التأكد من ذلك من خلال كود مثل التالي :

C#:
كود PHP:

Car x newCar();
Car y x;

x.carNumber=1;
y.carNumber =2;

Console.WriteLine (x.carNumber);
Console.ReadKey(); 

VB.net:
كود PHP:

Dim x As Car newCar() 
Dim y As Car 
x
.carNumber 
y
.carNumber 
Console
.WriteLine(x.carNumber
Console.ReadKey() 

لعمل نسخة حقيقة من ال Class المسمى Car لا بد من تطبيق Clone ، قم بجعل Car Class يطبق ال Cloneaple Interface وقم بكتابة دالة ال Clone ، سنتعرف على هذه العملية في وقت لاحق ولكن حتى ذلك الحين يمكنك الاستفادة من هذا الرابط :
http://vb4arab.com/vb/showthread.php?t=10209


الساعة الآن 05:31 PM.

Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية

Ads Management Version 3.0.1 by Saeed Al-Atwi

a.d - i.s.s.w