Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 我似乎无法正确地编写这段代码。它涉及代表_Vb.net_Visual Studio_Delegates - Fatal编程技术网

Vb.net 我似乎无法正确地编写这段代码。它涉及代表

Vb.net 我似乎无法正确地编写这段代码。它涉及代表,vb.net,visual-studio,delegates,Vb.net,Visual Studio,Delegates,因此,我必须为其编写代码的提示如下: 编写一个具有类形状的程序。SquareArea()和RectangleArea()是分别计算正方形和矩形面积的两种方法。创建一个名为Area的委托,在委托的帮助下调用方法,并添加两个方法产生的结果。我希望这会有所帮助 问题:我收到四个错误。1) 在“Module1”中找不到“Sub-Main”-我试图通过在模块1后添加Sub-Main()来解决此问题,但这并没有解决任何问题。2) 未声明“FnAreaSquare、FnAreaRectangle和FnArea

因此,我必须为其编写代码的提示如下: 编写一个具有类形状的程序。SquareArea()和RectangleArea()是分别计算正方形和矩形面积的两种方法。创建一个名为Area的委托,在委托的帮助下调用方法,并添加两个方法产生的结果。我希望这会有所帮助

问题:我收到四个错误。1) 在“Module1”中找不到“Sub-Main”-我试图通过在模块1后添加Sub-Main()来解决此问题,但这并没有解决任何问题。2) 未声明“FnAreaSquare、FnAreaRectangle和FnAreaAll”。在我做的其他作业中,我们就是这样做的。我无法想出如何解决这些问题。所以,如果有人有时间,你能看一下我的代码并指出我可能犯的任何错误吗?多谢各位

这是我的密码:

Module Module1

    Public Delegate Sub Area()
    Sub Delegates()
        Dim Fns As Area
        Fns = New Area(AddressOf FnAreaSquare)
        Fns()
        Fns = New Area(AddressOf FnAreaRectangle)
        Fns()
        Fns = New Area(AddressOf FnAreaBoth)
        Fns()
    End Sub

    Public Class Shapes
        Dim SqSide, RectSide1, RectSide2 As Double

        Sub FnAreaSquare()

            SqSide = 6
            Console.WriteLine("The area of the square is " & (SqSide) ^ 2)
            Console.ReadKey()

        End Sub

        Sub FnAreaRectangle()

            RectSide1 = 7
            RectSide2 = 3
            Console.WriteLine("The area of the rectangle is " & (RectSide1 * RectSide2))
            Console.ReadKey()

        End Sub

        Sub FnAreaBoth()

            Console.WriteLine("The area of the both shapes added is " & (((SqSide) ^ 2) + (RectSide1 * RectSide2)))
            Console.ReadKey()

        End Sub

    End Class



End Module
这个问题真让我头疼,因为我花了这么多时间在这个问题上。知道有人可能会帮助我真是太棒了。谢谢大家

更新:这是我的新代码。我一切正常,但我不知道如何运行Shapes类中也发生的事情。我必须在我的项目中包括Shapes类,所以我想我会在其中添加答案和答案1。如果有更好的方法可以在不改变程序结构的情况下将Shapes类实现到我的程序中,那将非常有用。谢谢

Module Module1
Dim SquareSide As Integer = 2
Dim RectangleLength As Integer = 2
Dim RectangleWidth As Integer = 3
Dim Answer As Integer
Dim Answer2 As Integer
Public Delegate Sub Area()

Sub Main()

    Dim Del As Area
    Del = New Area(AddressOf SquareArea)
    Del()

    Del = New Area(AddressOf RectangleArea)
    Del()

End Sub

Sub SquareArea()
    Answer = SquareSide ^ 2
    Console.WriteLine(Answer)
    Console.ReadKey()
End Sub

Sub RectangleArea()
    Answer2 = RectangleLength * RectangleWidth
    Console.WriteLine(Answer2)
    Console.ReadKey()
End Sub

Public Class Shapes

    Sub Shapes()

        Console.WriteLine(Answer + Answer2)

    End Sub


End Class

End Module

这里有一个解决方案给你,我已经评论过了,所以你可以看到发生了什么。如果您不需要输入,这也会要求用户输入,删除它并硬编码您想要的值。只有一个计算方法,因为签名必须与委托匹配,所以可以创建两个方法和两个委托,但不需要。另一件值得一提的事情是,您可以创建一个函数,当属性设置为另一个属性时进行计算,这样您就不必在最后执行计算

 Module Module1

'Create instance of Shapes class
Public shape As New Shapes

'Delegate to use we are going to invoke
Delegate Sub Area(ByVal x As Shapes)

Sub Main()

    AskForInput()

End Sub

''' <summary>
''' Asks user for input.
''' </summary>
Public Sub AskForInput()
    If Integer.TryParse(InputBox("Enter side size", "Square Size"), shape.SquareSide) Then
        If Integer.TryParse(InputBox("Enter rectangle length", "Rectangle Length"), shape.RectangleLength) Then
            If Integer.TryParse(InputBox("Enter rectangle width size", "Rectangle Width"), shape.RectangleWidth) Then
                'we are good to go now!

                ' Create an instance of the delegate.  
                Dim a As Area = AddressOf shape.CalculateArea

                'Call the method now.
                a.Invoke(shape)

            Else
                If MsgBox("Invalid Size", MsgBoxStyle.YesNo, "Continue?") = MsgBoxResult.Yes Then
                    AskForInput()
                End If
            End If
        Else
            If MsgBox("Invalid Size", MsgBoxStyle.YesNo, "Continue?") = MsgBoxResult.Yes Then
                AskForInput()
            End If
        End If
    Else
        If MsgBox("Invalid Size", MsgBoxStyle.YesNo, "Continue?") = MsgBoxResult.Yes Then
            AskForInput()
        End If
    End If
End Sub

Public Class Shapes

    Public Property SquareSide As Integer = 0
    Public Property RectangleLength As Integer = 0
    Public Property RectangleWidth As Integer = 0

    ''' <summary>
    ''' Calculates area of a square and rectangle.
    ''' </summary>
    ''' <param name="shape"></param>
    Public Sub CalculateArea(ByVal shape As Shapes)
        Console.WriteLine("Area of the square is: " & CStr(shape.SquareSide ^ 2))
        Console.WriteLine("Area of the rectangle is: " & CStr(shape.RectangleLength * shape.RectangleWidth))

        Console.Read()
    End Sub


End Class

End Module
模块1
'创建形状类的实例
作为新形状的公共形状
'要使用的委托,我们将调用
代理子区域(ByVal x作为形状)
副标题()
AskForInput()
端接头
''' 
''请求用户输入。
''' 
公共子AskForInput()
如果是Integer.TryParse(输入框(“输入边大小”、“正方形大小”),则为shape.SquareSide),然后
如果是Integer.TryParse(输入框(“输入矩形长度”、“矩形长度”)、shape.RectangleLength),则
如果是Integer.TryParse(输入框(“输入矩形宽度大小”,“矩形宽度”),shape.RectangleWidth),则
“我们现在可以走了!
'创建委托的实例。
尺寸a为面积=形状的地址。计算面积a
'立即调用该方法。
a、 调用(形状)
其他的
如果MsgBox(“大小无效”,MsgBoxStyle.YesNo,“是否继续?”)=MsgBoxResult,则为“是”
AskForInput()
如果结束
如果结束
其他的
如果MsgBox(“大小无效”,MsgBoxStyle.YesNo,“是否继续?”)=MsgBoxResult,则为“是”
AskForInput()
如果结束
如果结束
其他的
如果MsgBox(“大小无效”,MsgBoxStyle.YesNo,“是否继续?”)=MsgBoxResult,则为“是”
AskForInput()
如果结束
如果结束
端接头
公共类形状
公共属性平方边为整数=0
公共属性矩形长度为整数=0
公共属性矩形宽度为整数=0
''' 
''计算正方形和矩形的面积。
''' 
''' 
公共子计算器ea(ByVal形状作为形状)
Console.WriteLine(“正方形的面积为:”&CStr(shape.SquareSide^2))
WriteLine(“矩形区域为:”&CStr(shape.RectangleLength*shape.RectangleWidth))
Console.Read()
端接头
末级
端模块

您没有解释代码中存在的问题,也没有提出具体问题(或任何问题)。这不是一个网站,这里有我的作业的拷贝/粘贴和到目前为止我的代码的转储。有人能帮我完成吗?帖子。您的代码有什么困难,我们可以为您回答什么具体问题?@KenWhite感谢您的快速回复。对不起,我会更清楚的。我不知道为什么代码不能正常工作。不幸的是,我的课是在线的,内容模糊。我们被分配了这个任务,但是很少有人给我们提供帮助。你能澄清一下我的程序有什么问题吗?这样我就可以解决它了?如果作业不是为我做的,我会更喜欢,这样我就能学会如何自己做。谢谢不,我不能澄清你的项目出了什么问题,因为你没有解释你遇到了什么困难。它不工作不是一个有用的问题描述。具体到什么程度它不起作用?请发表您的帖子并提供具体细节。解释你期望代码做什么,它在做什么,或者它做错了什么,并提出一个具体的问题。为什么不起作用?这一点也不具体。我们是来帮助你的,但是你需要努力清楚地解释困难,并提出一个可以回答的问题。再一次,请发表你的帖子,并在那里添加信息。如果它不在问题中,它就不存在。不要在评论中隐藏细节。把它们放在问题里。@KenWhite我已经添加了这个问题,谢谢你坚持我的观点。非常感谢你的帮助!代码对我来说似乎是有意义的,但我相信它已经通过了我们迄今所学到的东西。我已经更新了我的代码,由于你的帮助,很多代码都被更正了,但我似乎在一个问题上卡住了。请阅读我的更新部分了解更多信息。再次感谢!!!我不确定我是否在跟踪你?它是您需要的一个类和您需要的委托。我提到如果你不需要输入,你可以删除,如果你