2012-03-07 3 views
3

я перевожу с C# код в VB.NET, (WPF, .NET 4)Оператор = не определен для типов UIElement и UIElement ..?

C#

// Update the Z-Index of every UIElement in the Canvas. 
foreach(UIElement childElement in base.Children) 
{ 
    if(childElement == element) 
     Canvas.SetZIndex(element, elementNewZIndex); 

VB.NET (авто-перевод)

' Update the Z-Index of every UIElement in the Canvas. ' 
For Each childElement As UIElement In MyBase.Children 
    If childElement = element Then  ' <<<<<<<<<<<<< Compile ERROR ' 
    Canvas.SetZIndex(element, elementNewZIndex) 

Ошибка компиляции:

Error 4 Operator '=' is not defined for types 'System.Windows.UIElement' and 'System.Windows.UIElement'.

Как возможно, что в C# задан оператор, но в VB.NET - НЕ (?)

ответ

1

Попробуйте использовать childElement.Equals(element) вместо

+0

Как в C# определен оператор, но в VB - не ..? – serhio

+2

Прочитайте это (http://www.codeproject.com/Articles/18714/Comparing-Values-for-Equality-in-NET-Identity-and); в конце статьи обсуждается равенство в vb.net. – Dave

+2

Я не думаю, что это действительно отвечает на вопрос OP. Я думаю, что OP хочет знать, почему ** оператор = не работает в VB.Net, а не как исправить код. И статья гласит: «У VB.NET нет оператора == или любого оператора, эквивалентного ему». без какого-либо объяснения, которое, по крайней мере, неполное, так как существует оператор =, который может быть перегружен. – ken2k