14-10-12, 03:50 PM
كاتب المشاركة : أحمد جمال
Name Clashesاحياناً ما يقوم class او struct ما بعمل implements لاكثر من interface ، وربما يحدث مشاكل في تشابه الأسماء ، لنفترض المثال التالي :
C#:
كود :
public interface ICar
{
void move();
}
public interface ITruck
{
void move();
}
public class BMW: ITruck, ICar
{
}كود :
Public Interface ICar
Sub move()
End Interface
Public Interface ITruck
Sub move()
End Interface
Public Class BMW
Implements ITruck
Implements ICar
End ClassC#:
كود :
public class BMW: ITruck, ICar
{
void move()
{
// do something.
}
}كود :
Public Class BMW
Implements ITruck
Implements ICar
Private Sub move()
' do something.
End Sub
End ClassC#:
كود :
public class BMW: ITruck, ICar
{
void ICar.move()
{
// do something.
}
void ITruck.move()
{
// do something.
}
}كود :
BMW ahmedCar=new BMW();
ICar temp= (ICar)ahmedCar;
temp.move();C#:
كود :
Dim ahmedCar As New BMW()
Dim temp As ICar = DirectCast(ahmedCar, ICar)
temp.move()كود :
Dim ahmedCar As New BMW()
Dim temp As ICar = DirectCast(ahmedCar, ICar)
temp.move()