String Array wird nicht erkannt | Any ist kein Member von String()

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    String Array wird nicht erkannt | Any ist kein Member von String()

    Hallo zusammen,

    Ich wollte folgende Funktion verwenden ( hier im Forum entdeckt):

    VB.NET-Quellcode

    1. Private Function ContainsKeyword(s As String) As Boolean
    2. Dim keyWords = "abc def ghi".Split
    3. Return keyWords.Any(Function(keyWord) s.Contains(keyWord))
    4. End Function


    Dabei erkennt Visual Studio keyWords aber nicht als String()

    Schreibe ich es explizit hin, also:

    VB.NET-Quellcode

    1. Dim keyWords As String() = "abc def ghi".Split

    dann ist .Any kein Member von String().

    Als würde er die Linq-Extension nicht erkennen. Ich versuche das Ganze in ein bestehendes Projekt einzubauen (.Net-Framework 4.8), den Verweis auf System.Xml.Linq habe ich händisch hinzuegfügt, hat aber nichts geholfen.

    Weitere Ansatzpunkte:
    mscorlib.dll hinzufügen -> ist automatisch durch Buildsystem vorhanden
    System.Core.dll hinzufügen -> ist automatisch durch Buildsystem vorhanden
    bin- & obj-Ordner löschen und Projekt neu erstellen -> hat nichts gebracht

    In einem anderen Projekt unter Framework 4.7.2 funktioniert es komischerweise. Also habe ich wahrscheinlich mal wieder irgendwo an der richtigen Stelle einen Haken vergessen.

    Kann mir jemand sagen wo?

    RiLo schrieb:

    VB.NET-Quellcode

    1. Return keyWords.Any(Function(keyWord) s.Contains(keyWord))
    Probierma

    VB.NET-Quellcode

    1. Return keyWords.Any(Function(s) s.Contains(keyWord))
    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!
    @RiLo Dann verwende in diesem Kontext einen bisher noch nicht vergebenen Variablennamen:

    VB.NET-Quellcode

    1. Return keyWords.Any(Function(s42) s42.Contains(keyWord))
    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!
    So?

    VB.NET-Quellcode

    1. Private Function ContainsKeyword(s As String) As Boolean
    2. Dim keyWords = "abc def ghi".Split
    3. Dim s42 = s
    4. Return keyWords.Any(Function(s42) s42.Contains(keyWord))
    5. End Function


    Der Fehlercode bleibt derselbe.

    Ich bin ja kein Experte, aber ich denke das Hauptproblem wird sein, dass er aus irgendeinem Grund das .Any nicht kennt (auch wenn es nicht rot unterstrichen ist).
    Wie bereits im Eingangspost erwähnt, wird keyWords auch nicht als "As String()" erkannt, sondern nur als Object. In meiner zweiten Projektmappe (in der es funktioniert) erkennt er direkt keyWords als String() und kennt dann auch .Any

    RiLo schrieb:

    VB.NET-Quellcode

    1. Dim s42 = s

    RodFromGermany schrieb:

    verwende in diesem Kontext einen bisher noch nicht vergebenen Variablennamen
    Lösche diese Zeile.
    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.NET-Quellcode

    1. Private Function ContainsKeyword(s As String) As Boolean
    2. Dim keyWords = "abc def ghi".Split
    3. Return keyWords.Any(Function(s42) s42.Contains(keyWord))
    4. End Function


    Dann wird mir keyWord rot unterstrichen mit der Meldung: "keyWord wurde nicht deklariert".

    Vielleicht noch eine Anmerkung:
    Wenn ich meinen ursprünglichen Code laufen lasse kommt eine System.MissingMemberException Der öffentliche Member Any für den Typ String() wurde nicht gefunden.


    Edit: Nach dem ich

    VB.NET-Quellcode

    1. Dim keyWords as String() = "abc def ghi".Split

    geschrieben und die zweite Zeile mit Return noch einmal komplett neu getippt habe, kennt er auf einmal Any. Was für ein sch*** Fehler.

    Trotzdem vielen Dank für die Hilfe Rod

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RiLo“ ()

    RiLo schrieb:

    den Verweis auf System.Xml.Linq habe ich händisch hinzuegfügt
    Ist falsch. System.LINQ ist richtig.

    Dein

    VB.NET-Quellcode

    1. Private Function ContainsKeyword(s As String) As Boolean
    2. Dim keyWords = "abc def ghi".Split
    3. Return keyWords.Any(Function(s42) s42.Contains(keyWord))
    4. End Function
    geht natürlich nicht. Du hast keinen Bezug mehr zum Ursprungsstring und Keyword ist nirgends deklariert. Was Du wohl wolltest, ist:

    VB.NET-Quellcode

    1. Private Function ContainsKeyword(s As String) As Boolean
    2. Dim keyWords = "abc def ghi".Split
    3. Return keyWords.Any(Function(s42) s.Contains(s42))
    4. End Function
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.