myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Was sind "Lokale statische Methoden"?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Was sind "Lokale statische Methoden"?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
RafaelVogt RafaelVogt ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.08.2019
Beiträge: 27


RafaelVogt ist offline

Was sind "Lokale statische Methoden"?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

dieses o.g. Thema ist mir sehr leicht gefallen. Zum Glück. Aber, wie sollte es anders sein, beim Nachvollziehen des im Buch genanntn Beispiels kommt es zu einem Fehler:

Fehlermeldung:
Fehler CS8652 Das Feature "Statische lokale Funktionen" befindet sich zurzeit in der Vorschau und wird *nicht unterstützt*. Um Previewfunktionen zu nutzen, verwenden Sie die Sprachversion "Preview".

Der Code dazu:

C#-Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2_4_Operatoren____3_Logische_Operatoren
{
    class Program
    {
        static void Main(string[] args)
        {

            int x = 8;
            int y = 9;

            if ((x != y) | DoSomething())
                Console.WriteLine("Bedingung ist erfüllt");
            Console.ReadLine();

            static bool DoSomething()
            {
                Console.WriteLine("in DoSomething");
                return true;
            }

            Console.ReadKey();
        }
    }
}

Ansich verstehe ich was hier passieren soll. Trotzdem wüsste ich doch gerne etwas mit der Fehlermeldung anzufangen.

Danke im Voraus (-:


mycsharp.de  Moderationshinweis von Abt (08.09.2019 10:12):

Es gibt kein Grund im Titel irgendeine 'Newbie' Nummerierung zu führen.
Siehe auch  [Hinweis] Wie poste ich richtig?
Danke.

 
08.09.2019 07:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.321
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sicher das das Beispiel korrekt ist?
Der Compiler interpretiert dein static bool DoSomething nämlich nicht als lokale Methode sondern eben als statische lokale Variable DoSomething.
Entsprechend kommt es auch zu dieser Meldung.

T-Virus

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am 08.09.2019 09:30.

08.09.2019 09:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
RafaelVogt RafaelVogt ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.08.2019
Beiträge: 27

Themenstarter Thema begonnen von RafaelVogt

RafaelVogt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Habs eben nochmal überprüft. Das Beispiel steht so im Buch und er meldet diesen Fehler. Ich weiß eben nur nicht, wie es richtig heißen muss, weil ich ja aus diesem Buch lerne. )-:
08.09.2019 10:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.364
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Erst seit C# 7 gibt es lokale Methoden:  Lokale Funktionen
Ansonsten müssen Methoden immer direkt untereinander in einer Klasse definiert werden, bei dir also unterhalb (oder oberhalb) der Main-Methode:

C#-Code:
namespace _2_4_Operatoren____3_Logische_Operatoren
{
    class Program
    {
        static void Main(string[] args)
        {
            // ...
        }

        static bool DoSomething()
        {
            Console.WriteLine("in DoSomething");
            return true;
        }
    }
}

PS: Welches Buch verwendest du denn?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am 08.09.2019 11:04.

08.09.2019 11:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.321
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hab mal kurz in der Doku nachgelesen.
Dort werden die lokalen static Methoden seit C# 7 supportet.
Vermutlich sind deine Projekt Einstellungen nicht aktuell, weshalb du noch gegen eine alte C# Version arbeitest und der Compiler aktuelle Features nicht kennt.

Nachtrag:
Th69 war schneller :)

T-Virus

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am 08.09.2019 11:04.

08.09.2019 11:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.057
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hinweis: alle CS Fehler, die Visual Studio im Error Window anzeigt, sind vollständig dokumentiert.
Einfach den Fehler anklicken (Rechtsklick, Menüname weiß ich gerade nicht) oder F1 drücken, dann wird man auf die Doku mit der jeweiligen Lösung / Fehlerbehebung geleitet.
08.09.2019 11:17 Beiträge des Benutzers | zu Buddylist hinzufügen
RafaelVogt RafaelVogt ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.08.2019
Beiträge: 27

Themenstarter Thema begonnen von RafaelVogt

RafaelVogt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

C# 8 mit Visual Studio 2019

Bis jetzt bin ich auf den ersten 103 Seiten auf 5 mehr oder weniger gravierende Fehler gestoßen. 2 Davon musste ich wie diesen hier im Forum behandeln, weil es mir nicht möglich war den Fehler selber zu erkennen.
08.09.2019 11:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.057
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

C#8 ist standardmäßig auch nicht in Visual Studio aktiviert, sondern 7.3 (C# 8 ist auch noch nicht mal final veröffentlich, sondern kommt erst Ende September mit .NET Core 3).
 Alle weiteren Versionen müssen über die Projekteinstellungen gesetzt werden (alternativ LangVersion direkt im csproj File).

Bin mir sicher, dass der Hinweis auch im Buch steht :-)
08.09.2019 11:30 Beiträge des Benutzers | zu Buddylist hinzufügen
gfoidl gfoidl ist männlich
myCSharp.de-Team

avatar-2894.jpg


Dabei seit: 07.06.2009
Beiträge: 6.594
Entwicklungsumgebung: VS 2019
Herkunft: Waidring


gfoidl ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo RafaelVogt,

lokale Funktionen wurden mit C# 7 eingeführt. Durch praktischen Einsatz dieser Sprachversion wurde bemerkt, dass oft versehentliche lokale Variablen und Argumente in der lokalen Funktion verwendet wurde, worauf der Compiler dafür eine "Closure" erstellen musste. Da dies eben oft unbewusst gemacht wurde, entschied man sich mit C# 8 dem Abhilfe zu leisten und somit die "statischen lokalen Funktionen" einzuführen -- gekennzeichnet mit dem static Schlüsselwort bei der Deklaration der lokalen Funktion.

Wie bereits erwähnt und auch in der Fehlermeldung (indirekt) angegeben, muss dafür die Sprachversion 8.0 gesetzt werden. latest genügt hier nicht, es muss explizit 8.0 od. preview verwendet werden.

mfG Gü
08.09.2019 19:19 Beiträge des Benutzers | zu Buddylist hinzufügen
RafaelVogt RafaelVogt ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.08.2019
Beiträge: 27

Themenstarter Thema begonnen von RafaelVogt

RafaelVogt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

auch Dir vielen Dank (-:
09.09.2019 09:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.10.2019 23:47