vb.net中作业的返回值是多少?
当我完成作业时,返回值是多少?
例如,我可以这样做吗? (即赋值返回指定的值) Dim a As Integer = 1 Dim b As Integer = 2 a = b = 3 我今天写这段代码时提出了这个问题: Dim updates = GetUpdates() While updates.Count > 0 Foo.ApplyUpdates(updates) updates = GetUpdates() End While 我希望我能用这种方式写出来…… While (updates = GetUpdates).Count > 0 Foo.ApplyUpdates(updates) End While 我知道它不是那么干净……(我完全没有宣布更新)但它让我对.NET中的赋值如何工作感到好奇……它是一个具有返回值的函数吗?如果是这样的话……它又回归了什么? 编辑 我尝试了第一块代码.看起来编译器将其解释为将b和3的比较结果分配给…当然是编译器错误. 对于第二个代码块,我得到的是operator =没有为什么类型更新定义…即它认为它是一个比较,而不是一个赋值. 那么为了补充我的问题,为什么它会这样工作呢?是仅仅因为vb.net重载符号=有两个含义(赋值和比较)?
这实际上是关于赋值如何在VB中工作,而不是在.NET中. 这在VB.Net中不起作用. VB.Net中的= Operator只是“将权利的值赋予其左侧的变量或属性”.
如上面的语句所示,赋值运算符不会在VB.Net中返回值. 请注意,这与其他.NET语言不同.例如,在C#中,赋值= Operator执行您所描述的内容,并“将其右侧操作数的值存储在由其左侧操作数表示的存储位置,属性或索引器中,并将该值作为其结果返回“. Dim a As Integer Dim b As Integer a = b = 3 请注意,如果指定了Option Strict,则实际上这将是一个错误:“Option Strict On禁止从’Boolean’到’Integer’的隐式转换.” 这是因为VB.Net认为这是两个操作 – 它基本上是在尝试: Dim a As Integer Dim b As Integer Dim temp as Boolean temp = (b = 3) a = temp
嗯,这就是语言的设计方式.我怀疑你是正确的,因为相同的运算符(=)被用作赋值,并且比较是为什么用这种方式制作VB的原因.但是,最初的VB语言是这样的,为了保持VB.Net的语法相同(或尽可能接近),我怀疑这种行为是继续进行的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |