VB.Net-数组索引超出范围错误

VB.Net-数组索引超出范围错误,.net,arrays,vb.net,exception,string-concatenation,.net,Arrays,Vb.net,Exception,String Concatenation,我是VB.Net的新手。我的任务是使用界面为Power、Square、Cube编写用户方法。当我编译代码时,我得到一个错误: 捕获异常:数组索引超出范围 我不知道我在哪里犯了错误。我刚刚开始学习VB.Net 以下是接口的源代码: Interface Calc Sub Square(ByVal number As Double) Sub Cube(ByVal number As Double) Sub Power(ByVal number As Double, ByVal

我是VB.Net的新手。我的任务是使用
界面
Power
Square
Cube
编写用户方法。当我编译代码时,我得到一个错误:

捕获异常:数组索引超出范围

我不知道我在哪里犯了错误。我刚刚开始学习VB.Net

以下是接口的源代码:

Interface Calc
    Sub Square(ByVal number As Double)
    Sub Cube(ByVal number As Double)
    Sub Power(ByVal number As Double, ByVal raiseTo As Double)
End Interface
下面是我实现上述接口的类的源代码:

Class Calculation
    Implements Calc

    Sub Square(ByVal number As Double) Implements Calc.Square
        Console.WriteLine("Square of " & number & " = " (number * number))
    End Sub

    Sub Cube(ByVal number As Double) Implements Calc.Cube
        Console.WriteLine("Power of " & number & " = " (number * number * number))
    End Sub

    Sub Power(ByVal number As Double, ByVal raiseTo As Double) Implements Calc.Power
        Console.WriteLine("Power of " & number & " = " (number ^ raiseTo))
    End Sub
End Class
以下是主要的方法:

Sub Main()
    Console.WriteLine(vbCrLf & vbTab & "********** Calculation Using Interface *********")

    Dim obj As Calculation = New Calculation()

    Try
        obj.Square(5.0)
        obj.Cube(5.0)
        obj.Power(5.0, 4.0)
    Catch ex As Exception
        Console.WriteLine(vbCrLf & "Exception Caught: " & ex.Message.ToString())
    End Try

    Console.WriteLine(vbCrLf & "Press any key to exit....")
    Console.ReadLine()
End Sub
试试这个

Public Class Calculation
Implements CalcIFace
Sub Square(ByVal number As Double) Implements CalcIFace.Square
    Console.WriteLine("Square of " & number & " = " & number * number & "")
End Sub
Sub Cube(ByVal number As Double) Implements CalcIFace.Cube
    Console.WriteLine("Power of " & number & " = " & number * number * number & "")
End Sub
Sub Power(ByVal number As Double, ByVal raiseTo As Double) Implements CalcIFace.Power
    Console.WriteLine("Power of " & number & " = " & number ^ raiseTo & "")
End Sub
End Class
  • 在OP的方法中,连接是错误的

  • OP did
    Console.WriteLine(“平方的”&number&“=”(number*number))
    这应该像
    Console.WriteLine(“平方的”&number&“=”&(number*number))


在输出中,您连接了一个字符串,但在连接中遗漏了一个
&

这一行:

Console.WriteLine("Square of " & number & " = " (number * number))
应该是:

Console.WriteLine("Square of " & number & " = " & (number * number))
错误消息(我认为)是由于编译器将
“=”
作为字符串数组进行评估,并试图返回
(number*number)
它的第个元素。考虑以下事项:

Console.WriteLine((New String("foo"))(1)) 'this fails
顺便说一句,你应该换一下。这不会解决您的问题,但在您解决此问题之前,它将不允许编译代码


在部署应用程序之前,花时间修复编译时错误比尝试远程调试运行时错误要好得多。

从哪里得到错误??嗯
Console.WriteLine(“&number.ToString()&”=”&(number*number.ToString())
(缺少运算符,缺少.ToString())等等?@hector我不知道。。“没有特定的行。@AndrewMorton尝试了您的解决方案,但出现了相同的错误……您应该打开选项Strict。”。打开该选项后,您的代码将无法编译。这将允许您在设计时而不是运行时查找错误。请您在回答中添加一些解释。OP可能复制并粘贴了您的答案,但没有理解最初的错误所在。问题与括号无关。Wilko yes ofcource
Console.WriteLine(“平方”&number.ToString()&“=”&(number*number.ToString())
这应该是肯定的works@Matt,谢谢你指出错误。。也谢谢你的链接,这些对像我这样的初学者真的很有帮助