VB.NET:代码的捷径

CJ7*_*CJ7 1 vb.net

为什么str我的VS2005 IDE中的以下VB.NET代码设置为Nothing:

If Trim(str = New StreamReader(OpenFile).ReadToEnd) <> "" Then
    Button2.Enabled = True
    TextBox1.Text = fname
End If
Run Code Online (Sandbox Code Playgroud)

OpenFile 是一个返回一个的函数 FileStream

编辑:如果包含修剪的上述行不正确,有没有办法只在一行中达到预期的结果?

Kon*_*lph 5

代码永远不会设置str:

If Trim(str = New StreamReader(OpenFile).ReadToEnd) <> "" Then
Run Code Online (Sandbox Code Playgroud)

此行未设置str,它将其与读取文件的结果进行比较.

在VB中,=运算符有两个含义,具体取决于上下文.如果在语句中使用,它会将右侧表达式分配给左侧表达式.如果在任何其他上下文中使用(即在表达式中),则执行相等比较,而不是赋值.

因此,在VB中,您必须编写以下内容:

str = New StreamReader(OpenFile()).ReadToEnd()
If str.Trim() <> "" Then …
Run Code Online (Sandbox Code Playgroud)

请注意,我已经Trim通过方法调用替换了自由函数,以使代码与常见的.NET编码实践更加一致.