コードを編集したので、実行しようとすると、このエラーが発生します。
タイプ 'System.InvalidCastException' の未処理の例外が Microsoft.VisualBasic.dll で発生しました
追加情報: 文字列 "Holden 308" から型 "Integer" への変換は無効です。追加情報: 文字列「JD Catepillar Track」からタイプ「Integer」への変換は無効です。
そのため、どちらのエラーも New クラスをオーバーロードしている HeavyStockItem クラスで発生しています。なぜそれがそうしているのかを理解するために誰かが私を助けることができるかどうか疑問に思っています。
Option Strict On Public Class Form1 Dim StockItem1 As StockItem Dim StockItem2 As CarEngine Dim StockItem3 As CarEngine Dim StockItem4 As StockItem Dim StockItem5 As HeavyStockItem Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load StockItem1 = New StockItem("Screwdriver Set", 42) StockItem2 = New CarEngine(8025, "Madza B6T", 1252, 800, "Z4537298D") 'StockItem3 = New CarEngine("Holden 308", 958, 1104, "P74623854S") StockItem4 = New StockItem(8002, "Trolley Jack", 127) 'StockItem5 = New HeavyStockItem("JD Catepillar Track", 3820, 2830) End Sub Private Sub btnListStock_Click(sender As Object, e As EventArgs) Handles btnListStock.Click txtOutput.Clear() ShowOutput(StockItem1) ShowOutput(StockItem2) 'ShowOutput(StockItem3) ShowOutput(StockItem4) 'ShowOutput(StockItem5) End Sub Public Sub ShowOutput(ByVal Output As StockItem) txtOutput.Text &= Output.Print() txtOutput.Text &= vbCrLf End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnEnd.Click End End Sub End Class
Public Class StockItem Friend CostPrice As Integer Friend LastStockNumber As Integer Friend StockNumber As Integer Friend Description As String Friend Shared LastStockItem As Integer = 10000 Overridable Function Print() As String Dim Result As String = "" Result &= "Stock No: " & StockNumber Result &= vbCrLf Result &= "Description: " & Description Result &= vbCrLf Result &= "Cost Price: " & CostPrice Result &= vbCrLf Return Result End Function Public Sub New(ByVal StockNumber As Integer, Description As String, ByVal CostPrice As Integer) Me.New(Description, CostPrice) Me.StockNumber = StockNumber End Sub Public Sub New(ByVal Description As String, ByVal CostPrice As Integer) LastStockNumber += Rnd() Me.StockNumber = LastStockNumber Me.Description = Description Me.CostPrice = CostPrice End Sub Public Sub GetCostPrice() End Sub End Class
Public Class HeavyStockItem Inherits Assessment3.StockItem Friend Weight As Integer Public Function GetWeight() As String Return Me.GetWeight End Function Public Sub New(ByVal StockNumber As Integer, ByVal Description As String, ByVal CostPrice As Integer, ByVal Weight As Integer) MyBase.New(StockNumber, Description, CostPrice) Me.Weight = Weight End Sub Public Sub New(ByVal Description As String, ByVal CostPrice As Integer, ByVal Weight As Integer) MyBase.New(Description, CostPrice, Weight)'' Where the error is occurring LastStockNumber += Rnd() Me.StockNumber = LastStockNumber End Sub End Class
Public Class CarEngine Inherits Assessment3.HeavyStockItem Friend EngineNumber As String Overrides Function Print() As String Dim Result As String = "" Result &= "Stock No: " & StockNumber Result &= vbCrLf Result &= "Description: " & Description Result &= vbCrLf Result &= "Cost Price: " & CostPrice Result &= vbCrLf Result &= "Weight: " & Weight Result &= vbCrLf Result &= "Engine Number: " & EngineNumber Result &= vbCrLf Return Result End Function Public Sub New(ByVal StockNumber As Integer, ByVal Description As String, ByVal CostPrice As Integer, ByVal Weight As Integer, ByVal EngineNumber As String) MyBase.New(StockNumber, Description, CostPrice, Weight) Me.EngineNumber = EngineNumber End Sub Public Sub New(ByVal Description As String, ByVal CostPrice As Integer, ByVal Weight As Integer, ByVal EngineNumber As String) MyBase.New(Description, CostPrice, Weight) LastStockNumber += Rnd() Me.StockNumber = LastStockNumber End Sub End Class
提供されたヘルプは素晴らしいでしょう。人々がコードの他の部分について尋ねた場合に備えて、本当に必要な小さなビットだけを配置するのではなく、完全なコードを提供する方が簡単だと思いました. あなたが助けを提供した場合、読んで助けを提供してくれてありがとう。