当前位置 : 主页 > 编程语言 > c语言 >

VB.NET:运算符’=’未定义…对于相同类型的变量和对象?

来源:互联网 收集:自由互联 发布时间:2021-06-24
好的,我在这里完全糊涂了.我有一个班……说MyClass.它有我的类型的另一个类的几个属性,比如MyHelperClass(以及其他属性). 我正在做以下事情: Dim inst As MyClass = New MyClass() With { .p1 = sv1, .
好的,我在这里完全糊涂了.我有一个班……说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的赋值语句,它给出了以下蓝色波浪线错误:

没有为myLib.MyHelperClass和myLib.MyHelperClass类型定义Operator’=’.

我根本没有得到这个错误!我甚至不知道从哪里开始弄明白这一点.救命!

201105.06 0305:
h1类型的签名是List(Of myLib.Address),其中Address是一个非常基本的类,具有典型的地址字段(名称,地址,城市,州,邮政等). getHelperClass的返回类型也是List(Of myLib.Address).

正如SSS在他的回答中暗示的那样,如果我在没有运算符的类上使用它进行相等测试,我会期望=不能以“自然”的方式工作,但是我使用它作为赋值运算符,而不是相等,我看不出任何问题.我期待将getHelperClass的结果分配给h2.但相反,它告诉我=没有为类型定义.是否有可能由于某种原因,编译器将其解释为=(EQUALS)而不是=(ASSIGN)?

至于评论这条线并且它发生在第一条线上,我需要等到明天我回到办公室检查一下.会报告回来.

啊,是的,抱歉没有正确阅读你的OP.必须将作业误解为比较.也许你错过了一个逗号?例如,在声明“a = b = c”中,第一个等号是赋值,第二个是比较.
网友评论