Als Werkzeuge kommen wohl Visual Studio und VS Code zum Einsatz ?
Zum Erweitern / Ändern / ... dürften wohl bekannte Schlagwörter zum Zug kommen: sprechende Namensgebung, Schichtentrennung, Auslagern von Teilen mit hoher Veränderungsrate, SW-Tests, SOLID-Prinzipien,...
Bzgl. alternativer Engines mit C# einige Vorschläge von Google Bard: Stride, Godot, CryEngine (€), Monogame , OpenTK
Die vorige De-Installation (via Visual Studio Installer ?) könnte störende Reste hinterlassen haben.
(off-topic) was Unity angeht, könnten (langfristig höhere) Gebühren aufkommen: https://www.heise.de/news/Kompromiss-von-Unity-Aeltere-Spiele-werden-von-Runtime-Gebuehr-ausgenommen-9314697.html
Das ist mehr im SQL-Bereich zu suchen, im konkreten Fall filtern die WHERE- und/oder LIKE-Klausel (S. 512ff (Kap. 8.4.3ff) des Buchs "Einstieg in C# 2022 mit Visual Studio" aus dem Unterforum "Buchempfehlungen")
Zwecks Vorabhinweis (geht aus dem Buch nicht hervor): bei Daten verändernden Operationen verwendet man Parameter (-> https://mycsharp.de/forum/threads/66704/artikelserie-sql-parameter-von-befehlen) und bei GUI-Programmierung MVVM und Drei-Schichten-Architektur (-> https://mycsharp.de/forum/threads/118261/artikel-mvvm-und-databinding // https://mycsharp.de/forum/threads/111860/artikel-drei-schichten-architektur ) Der längerfristige Vorteil besteht in der höheren Sicherheit des Programmablaufs und man kann -auf menschlicher Seite- (häufige(re)) Änderungen oder Erweiterungen leicht(er) vornehmen.
Für weitere Connection-Strings (inkl. Parameter): https://www.connectionstrings.com/
"Schrödinger programmiert C#" wird Anforderungen wie WPF, DB-Anbindung wohl eher nicht erfüllen: https://www.rheinwerk-verlag.de/schroedinger-programmiert-c-sharp/ → Komplettes Inhaltsverzeichnis
"..zu hoch.." --> grundsätzlich ist in der SW-Entwicklung von einem häufig(er)en Ändern oder Erweitern einer Software -im Idealfall- an einer (zentralen) Stelle auszugehen. Am Beispiel des Links zu csharpcorner: wenn es Änderungen an den Daten gibt (...ID=3,Name=”Arvind”..., ID=5,Name="Weihnachtsmann",...) gilt es diese nur an einer Stelle vorzunehmen. Oder die Datenquelle ändert sich zu einem anderen DB-System → DataBinding
Weitere Stichworte die das Ändern oder Erweitern aus menschlicher Sicht erleichtern: Schichtentrennung, sprechende Namensgebung, Namespaces, SW-Tests, Versionskontrolle,...
Auch hallo,
i.Z. mit ASP.NET könnte das hier helfen: https://learn.microsoft.com/de-de/aspnet/web-forms/overview/ajax-control-toolkit/combobox/how-do-i-use-the-combobox-control-cs Und was verändernde Datenbankoperationen angeht: [Artikelserie] - SQL...
Als Schlagwörter könnte man auch zu "Macroservices" oder "Modulithen" recherchieren (ändert aber wohl nichts Fundamentales an den vorigen Postings)
Um mehrere Controls anzusprechen gibt es hier eine FAQ: https://mycsharp.de/forum/threads/21211/faq-variablennamen-zur-laufzeit-zusammensetzen-dynamisches-erzeugen-von-controls
Zitat von Rayano
Geld knapp
Auf der geposteten Seite ganz runterscrollen und die kostenlosen Blog-Artikel zu z.B. C#, Python,... durchlesen und -bearbeiten (irgendwann könnten die Anbieter schon Geld sehen wollen...) Längerfristig ist ein (häufigeres) Ändern und oder Erweitern der Software einzuplanen, was Stichworte wie z.B. "Design Patterns", "Datenstrukturen" oder "SOLID" erklärt
IronPython ( https://de.m.wikipedia.org/wiki/IronPython ) könnte man sich auch ansehen.
Vereinfacht fügt man die wenig(er) veränderlichen Teile einer Software zusammen und lagert die stärker veränderlichen Teile geschickt aus. Wobei es aber auch auf den Ziel-Kontext ankommt, welche Teile welchem (feingranularen) Änderungs- oder Erweiterungsgrad unterliegen.
Schlagwörter wie "SOLID-Prinzipien" (*), "DDD", "Namensgebung", "TDD", "KISS", "Namespaces",... dienen dem Menschen als Empfehlungen (nicht als Gesetz) um das (häufige) Ändern / Erweitern / Warten /.. der Software zu erleichtern (<- ab einer gewissen Komplexität dürfte aber selbst ein (grösseres) Spezialisten-Team damit ein Problem haben)
(*)das Auslagern in Klassen könnte langfristig gegen das I und D verstossen
Man könnte es mit https://playwright.dev/dotnet/docs/intro versuchen. Serverseitig könnten aber Schutzmechanismen aktiv sein um ((zu) häufige) Abfragen (z.B. einer wiederkehrenden URL oder unauthorisierter Nutzer) zu verhindern.
Neben virtuellen Maschinen könnte man sich Docker ansehen: https://hub.docker.com/_/microsoft-dotnet-runtime
Zitat von cprogrammer
welche man der Methode bei ihrem Aufruf übergibt, die in der Klasse, welcher der Methode angehört, nicht vereinbart ist,
aber für die Berechnung erforderlich ist.
--> externe (und damit -tendenziell- nicht testbare) Abhängigkeiten könn(t)en auch langfristig Probleme machen und in schwer lesbarem (und schwer bis gar nicht überarbeitbarem) Code enden.
Generell gibt C# mehr Leitplanken vor (im Ggs. zu z.B. C / C++ ). Zeigeroperationen fallen unter "unsafe code": https://learn.microsoft.com/de-de/dotnet/csharp/language-reference/unsafe-code
Mit einem virtuellen Ubuntu 22.04 scheinen die Anleitungen (auch ohne VS Code) zu funktionieren (Screenshot im Anhang, wenn auch ohne tiefgehenden Test)
Auch hallo,
unter Ubuntu 20 könnten die Hebel wohl woanders (neben Lese- und Schreibrechten) liegen: https://learn.microsoft.com/en-us/dotnet/core/tools/enable-tab-autocomplete (Quelle: https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-2004 )
Zitat von Runenmeister
Parameter und Eigenschaften
--> Das kann evtl. (auch) sein, vgl. mit https://www.dotnetperls.com/richtextbox (Abschnitt zu rtf: "(..)RTF stands for Rich Text Format, and this describes a certain file type where text formatting is encoded with special characters embedded in the text.
Tip When you apply formatting in a RichTextBox, you can access the richTextBox1.Rtf property to get the encoded RTF data.(..)"
Evtl. könnte der Hosting-Anbieter auch Docker anbieten, welches man mit ASP.NET Core verbinden könnte: Tutorial bei learn.microsoft.com
steilen Weg
Um die Wegfindung zu erleichtern: HTML ist eine Seitenbeschreibungssprache, CSS ist für die optische Darstellung im -jeweiligen- Browser sichtbarer HTML-Elemente zuständig. Im Gegensatz zu C# kennt HTML syntaktische Möglichkeiten wie Klassen, Schleifen, Annotationen,... nicht: MS Learn - "ASP.NET MVC 4 – Hilfsprogramme, Formulare und Überprüfung" ( nur (cs)html-Code beachten: alles mit @ am Anfang wird ein Browser syntaktisch nicht verstehen )
Was CSS betrifft: Cascading Style Sheets (wobei CSS auch Vererbung (engl. "inheritance") verwendet )
Eine Aufteilung des Webprojekts in separate html und css-Dateien kann auch hier Sinn haben um Änderungen/Erweiterungen leichter umsetzen zu können. Und bei komplexeren Seiten erst die Controls zeichnen lassen, danach in der gewünschten Formatierung (die css-Befehle also am Ende der Datei platzieren oder importieren lassen)
Weitere Vorschläge (wenn auch nicht C#-nativ): Link bei DataScienceDojo
Begriffe wie (z.B.) "top-Level" oder "main" gibt es in Python auch, aber diese haben dort eine andere Bedeutung: Beitrag bei RealPython
Im Vergleich zum Python-Interpreter achtet der C#-Compiler stärker auf syntaktische Formalien (im Sinn von (immer (*)) zu schreibendem Code), "code intendation" ist egal.
Im Minimalfall: -alle definierten Variablen, Methoden,... sind zwingend Bestandteil wenigstens einer Klasse, -"static void Main(string[] args)"-Methode in der ausführenden Datei, -Datentypsicherheit ist strikt einzuhalten (implizite oder explizite Typkonvertierung gibt es auch hier)
(*)neuere .NET Versionen verlagern solche Aktivitäten mehr in den Hintergrund, Bspl. "altes" Hallo Welt vs. "neues" Hallo Welt:
namespace HelloWorld
{
class Hello {
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
(neu)
Console.WriteLine("Hello World!");
Konzepte wie Namespaces, Coding Guidelines, Aufteilung in Schichten, TDD, Dokumentation, Architektur,... dienen aus menschlicher Sicht dem einfach(er)en Lesen/Schreiben/Ändern/Erweitern/... des Codes (auch in Python)
Zum Thema "Web API" (von der Eigenwerbung mal abgesehen) siehe den aktuellen Newsletter von entwickler.de
Qt, Dafür gibt es einen Online Installer bei [url= Download Qt: Get Qt Online Installer] qt.io[/url]
Klassen in C# sind die falsche Wahl...OOP
Generell: der C#-Compiler erzwingt die Verwendung von (wenigstens einer) Klasse(n) um Methoden/Variablen/... dort zu definieren. Zwecks OOP (neben dem Openbook) siehe diesen
Twitter Thread
Der längerfristige Sinn dieser (strenggenommen nur empfohlenen) menschlichen Verhaltensweisen wird klar, wenn man die Software (an zentraler Stelle) häufig(er) (oder leicht(er)) ändern/erweitern/nutzen/... will: Entwurfsmuster, Schichtentrennung, SOLID-Prinzipien, OOA, OOD, TDD, K.I.S.S., Namensgebung, ...
Ein Server ist im Kern ein Programm, welches auf Eingaben von aussen wartet und (irgendwelche) Resultate nach aussen zurückliefert. Node.js scheint (neben Apache + PHP) wohl auch nutzbar zu sein: (etwas älteres Video) https://www.youtube.com/watch?v=tkbu3TT5LT8
Nebenbei ist "DateTime" veraltend: FAQ - DateTime vs. DatetimeOffset...
im geschützten Speicher zu lesen oder zu schreiben
Funktioniert der ursprüngliche C/C-Code wie angedacht ? Wobei ein C oder C - Compiler (zumindest zur Kompilierzeit) idR ein liberaleres Verhältnis zum Manipulieren von Speicherinhalten hat.
Es könnte z.B. gefragt werden, ob es einen codetechnischen Unterschied zwischen einer 1..0* und 0..1 Assoziation gibt. Dieser Artikel könnte weiterhelfen: https://www.codeproject.com/Tips/596709/Implementation-of-Type-of-Association
Die Verwendung von LPSTR deutet übrigens auf einen (sehr) alten C++-Code hin: difference-between-char-and-lpstr-in-windows
auf irgendeine Weise funktioniert es
...Person2.Text, txtin_Person3.Text, txtin_Person4.Text,... txtin_Person4.Text... txtin_Person5.Text
Längerfristig sollte man (häufige(re)) Änderungen/Erweiterungen/Wartbarkeit/... des Codes einplanen (deswegen auch die bereits genannte Schichtentrennung: um genau diese Aktionen (an einer (zentralen) Stelle) zu erleichtern). Um mehrere Controls anzusprechen gibt es auch einen Artikel: FAQ - Variablennmen zur Laufzeit...
Prinzipiell geht so etwas, Stichwort z.B. "Web Scraping"
Es kann aber (z.B.) sein das die Zielseite Schutzmechanismen gegen zuviele Anfragen (pro Zeiteinheit) aktiviert hat oder Hintergrundinformationen geliefert werden wollen (die nur ein richtiger Browser mitgibt)
WPF .. Neuling Zwecks Erfolgserlebnis könnte man hier schauen: https://www.dotnetperls.com/webbrowser-wpf
Abhängigkeit... "gutem" Code Man sollte -auch auf Vorrat- davon ausgehen, dass sich die externen wie internen Laufzeitbedingungen eines Programms (öfter(s)) ändern können (z.B. könnte man das Vorhandensein einer Registry oder bestimmter Äste dort im Vorab abfragen). Ansonsten besteht eine weitere Gefahr von "Pain Driven Development" (Anspielung auf das neuste YT-Video von D. Tielke)
Für den Anfang: FAQ- Kommunikation von 2 Forms
üben
Und Fallstricke -trotz S.O.L.I.D.- vermeiden: Beitragsreihe bei Informatik-aktuell.de
...Anfänger...
Längerfristig sollte man empfohlene menschliche Verhaltensweisen -die das (häufige(re)) Ändern/Erweitern/Nutzen/Pflegen/... (an zentraler Stelle) der Software erleichtern- wie (z.B.) Namespaces, Namenskonventionen, SOLID-Prinzipien ("encapsulate what varies"), Aufteilung in Schichten, Versionsverwaltung, "pro Klasse eine Aufgabe", Dokumentation, TDD, Architektur,... beachten. Mit zunehmender Menge an Akteur:innen kommen weiterhin Stichworte wie (z.B.) Scrum, Kanban, "Code-Ownership", "mit Leuten reden",... ins Spiel.
C++ ... C# ...Python ..strukturiert
Die SOLID-Prinzipien könnte man noch recherchieren. Die bereits genannten Stichwörter stellen bekannte Bearbeitsmöglichkeiten dar, deren Vor- und Nachteile man kennt (oder kennen sollte). Ein Vorteil besteht aus menschlicher Sicht im einfacheren Ändern/Erweitern/Nutzen/... des Codes (an einer Stelle)
In C# ist alles (Methoden, Variablen,...) zwingend innerhalb einer Klasse zu defnieren. Mehrfachvererbung gibt es nicht und vermeidet das "diamond problem".
Wie geht man sowas an? WIE der damalige Autor auf den Code gekommen ist (trial and error, Doku gelesen,...) wird sich wohl kaum rekonstruieren lassen. Deswegen machen sinnvolle Namensgebungen Sinn: um das Ändern/Erweitern/Nutzen/... eines Codes/ einer API/... zu erleichtern. Eine gute und aktuelle Dokumentation mitzuliefern ("Read the fine manual") ist trotzdem nicht falsch: Twiiter-Thread von RapidAPI
Tabelle programmieren? Inhalte dynamisch hinzufügen und entfernen
...Wie bindet man eine Library ein
Z.B. mit Transact-SQL i.V. mit SQL Server Management Studio oder man sucht auf der Seite nach "Datenbank" ( https://learn.microsoft.com/de-de/dotnet/framework/data/adonet/sql/linq/how-to-dynamically-create-a-database ) Bei datenändernden Aktionen siehe auch Artikelserie: SQL-Parameter
Bibliotheken werden (neuer) über "NuGet" heruntergeladen.
..Anfänger mit C# ..
Teil II, um die gröbsten Fehler nach Möglichkeit zu verhindern:
--aus technischer Sicht interessiert den Compiler nur das formell korrekter Code geschrieben wird (zur Not zwingt einen der Compiler mittels Warn- oder Fehlermeldungen zu diesem Verhalten). "Formell korrekt" im Minimalfall: -alle Methoden/Variablen/... sind auf jeden Fall innerhalb einer Klasse zu definieren(), -eine cs.-Datei des Projekts enthält eine "static void Main"-Methode(), -Datentypsicherheit ist einzuhalten
(*)neuere .NET Versionen könnten liberaler sein und diese Anforderungen in den Hintergrund rücken lassen
--aus menschlicher Sicht machen diese (empfohlenen) Verhaltensweisen Sinn:
-Code Conventions (erleichtert das Lesen/Schreiben von Code)
-Aufteilung in Schichten, s.a. Drei-Schichten-Architektur (macht effektiv Sinn, wenn die SW an einer (zentralen) Stelle (häufig(er)) geändert oder erweitert werden soll) Generell erleichtert die korrekte Anwendung des "Teile-und-Herrsche"-Prinzips das Erweitern oder Ändern einer Software.
-weitere Stichwörter: Verwendung von SW-Tests / Algorithmen / Datenstrukturen...
Auf Vorrat (da DB-Anbindung): [Artikelserie] SQL-Befehle:... (macht Sinn, wenn man Daten manipulierenden Angreifern/Nutzern/... nicht "Tür und Tor" offen halten will)
Fehlerhafte (i.S. von nicht vertrauenswürdige) Software kann man sich aber auf jedem Weg einhandeln (Anspielung auf Youtube, "thenativeweb", "Achtung! npm ist unsicher (by Design …))
BASIC ..., Pascal und C. Grundsätzlich gibt es bei jeder Programmiersprache eine formalisierte Menge an Schlüsselwörtern auf die der Compiler / Interpreter / Transpiler (Bspl.: TypeScript) /... in einer vorgesehenen Art und Weise reagiert. Diese Schlüsselworte lassen sich x-beliebig kombinieren, führen aber eben nicht immer zum Erfolg und werden mit Warnungen oder Fehlermeldungen quittiert. Z.B. schlägt die Kombination "abstract class" i.V. mit "final" fehl.
Den Compiler / Interpreter /... selbst interessiert nur die formelle (nicht dessen logische) Korrektheit des Codes.
...PHP...C#...OOP... Auf Vorrat: C# erzwingt die Verwendung von Klassen zum Definieren von Variablen und Methoden. Datentypsicherheit wird auch streng gehandhabt: FAQ - Variablennamen zur Laufzeit...
... ändern?
Zusätzlich: im Endeffekt ist der verwendete C#-Compiler die entscheidende Instanz was formal(*) korrekten Code, Implementierungs-Möglichkeiten oder Magie im Hintergrund betrifft. Verhaltensweisen wie "Clean Code" oder "Aufteilung in Schichten" dienen dem Menschen, erleichtern aber das Ändern oder Erweitern eines Softwareprodukts. Und mit (tendenziell) zunehmender Menge an Code ist der Einsatz einer Versionsverwaltung (Git, (veraltet) Subversion, (veraltet) CVS,... ) anzuraten.
(*)nicht zwingend: logisch
...PHP...
PHP ist eine Skriptsprache und diese sind idR weniger anspruchsvoll was z.B. Formalien oder Gebrauch der OOP darstellt. Die Idee getter- und setter-Methoden als Container oder zentrale Kontrolle einzusetzen ist aber dieselbe wie in C#: https://www.php-einfach.de/experte/objektorientierte-programmierung-oop/php-design-patterns/get-und-set-methoden/
... get und set...
Das sind Methodennamen, und wie jede Methode beinhalten sie eine Teilmenge elementarer Befehle. Wobei "get" und "set" vom Compiler gesondert behandelt werden (im Ggs. zu anderen Bezeichnungen).
{ get; set; }
ist übrigens eine valide Kurzschreibweise, wenn nur Werte gelesen oder gesetzt werden sollen.