Problem beim Code ändern von C# nach VB

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Problem beim Code ändern von C# nach VB

    Hi wollte folgenden Code von C# nach Basic übersetzten:

    Quellcode

    1. private IEnumerable<Point> GetSquares()
    2. {
    3. for (int x = 0; x < mapSizeX; x++)
    4. {
    5. for (int y = 0; y < mapSizeY; y++)
    6. {
    7. yield return new Point(x, y);
    8. }
    9. }
    10. }

    Faul wie ich bin hab ich einen Online Converter benutzt ;)
    Der gab folgendes aus:

    VB.NET-Quellcode

    1. Private Function GetSquares() As IEnumerable(Of Point)
    2. For x As Integer = 0 To mapSizeX - 1
    3. For y As Integer = 0 To mapSizeY - 1
    4. yield Return New Point(x, y)
    5. Next
    6. Next
    7. End Function


    Nun weiß ich nicht was ich mit "yield" anstellen soll, drum hab ich es zum testen einfach mal raus gemacht, dann sagt Visual Studios mir:
    Der Wert vom Typ "System.Drawing.Point" kann nicht in "System.Collections.Generic.IEnumerable(Of System.Drawing.Point)" konvertiert werden.


    Was kann ich da machen, Danke im vorraus ^^

    Gruß, Wanted
    C# kann das, VB nicht.

    VB.NET-Quellcode

    1. public partial class Form1 : Form
    2. {
    3. public Form1()
    4. {
    5. InitializeComponent();
    6. }
    7. private void button1_Click(object sender, EventArgs e)
    8. {
    9. IEnumerable<Point> pt = GetSquares();
    10. Debugger.Break();
    11. }
    12. private int mapSizeX = 2;
    13. private int mapSizeY = 2;
    14. private IEnumerable<Point> GetSquares()
    15. {
    16. for (int x = 0; x < mapSizeX; x++)
    17. {
    18. for (int y = 0; y < mapSizeY; y++)
    19. {
    20. yield return new Point(x, y);
    21. }
    22. }
    23. }
    24. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    VB kann ALLEs ;)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. TestYield()
    4. End Sub
    5. Private Sub TestYield()
    6. For Each i As Integer In foo()
    7. Debug.Print(i)
    8. Next
    9. End Sub
    10. Private Iterator Function foo() As IEnumerable(Of Integer)
    11. For i = 1 To 10
    12. Yield i
    13. Next
    14. End Function
    15. End Class

    Ist das VB oder was? Bin ich der kleine grüne Yedi-Meister? Oder wie, oder was?
    Habs mal so Probiert, wie YaPh1l es vorgeschlagen hat, es wird nun kein Fehler mehr angezeigt.
    Ist der Code jetzt so richtig oder ist was falsch?

    VB.NET-Quellcode

    1. Private Function GetSquares() As IEnumerable(Of Point)
    2. Dim point_list As New List(Of Point)
    3. For x As Integer = 0 To mapSizeX - 1
    4. For y As Integer = 0 To mapSizeY - 1
    5. point_list.Add(New Point(x, y))
    6. Next
    7. Next
    8. Return point_list
    9. End Function


    Danke und Gruß, Wanted
    @picoflop: Kann meine Umgebung leider nicht nachvollziehen.
    @Wanted: Korrekt.
    Dieser Code verhält sich so, wie mein C#-Code.
    Allerdings weiß ich nicht, was Du ursprünglich bezweckt hast.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!