Хорошо, я полностью запутался здесь.У меня есть класс ... скажем MyClass
.У него есть несколько свойств другого класса моего типа, скажем MyHelperClass
(наряду с другими свойствами).
Я делаю следующее:
Dim inst As MyClass = New MyClass() With {
.p1 = sv1,
.p2 = sv2,
.h1 = getHelperClass(a1),
.p3 = sv3,
.p4 = sv4,
.h2 = getHelperClass(a2),
.p5 = sv5,
...
.pN = svN
}
*, где .p # - это некотороесвойство, .sv # является некоторым допустимым значением..h # - это свойство типа MyHelperClass
, а getHelperClass (a #) возвращает экземпляр указанного класса.
Теперь у меня есть странная вещь, где оператор присваивания для h1 работает идеально.Нет проблем.Оператор присваивания для h2, однако, дает мне следующую ошибку синими кривыми:
Operator '=' is not defined for types myLib.MyHelperClass and myLib.MyHelperClass.
Я просто не получаю эту ошибку вообще!Я даже не знаю, где начать выяснять это.HELP!
201105.06 0305: Подпись для типа h1: List(Of myLib.Address)
, где Address
- базовый класс с типичными адресными полями (имя, адрес, город, штат, zip)., так далее.).Тип возврата getHelperClass
также List(Of myLib.Address)
.
Как намекал SSS в своем ответе, я ожидал бы, что =
не будет работать "естественным" образом, если бы я использовал его для проверки на равенство в классе без операторов, однако я использую его какоператор присваивания, а не равенство, с которым я не вижу проблем.Я ожидаю, что результат getHelperClass
будет присвоен h2.Но вместо этого он говорит мне, =
не определен для типа.Возможно ли, что по какой-то причине компилятор интерпретирует его как =(EQUALS)
вместо =(ASSIGN)
?
Что касается комментирования этой строки и того, что происходит в первой, мне нужно подождать, пока я не вернусь в офис завтра, чтобы проверить это.Отзовусь.