Wie kann man c# code in einer Variable speichern?
Gibt es eine Möglichkeit, einen c#-Code in einer Variablen zu speichern? Ich möchte code als Text (user input) nehmen, bearbeiten, in einer Variablen speichern und in der Konsole anzeigen. (Code bearbeiten heißt Zeichen/Wörter ersetze und hinzufügen) Für eine einfache String Variable mit normalem Text würde das natürlich klappen. Wenn in der String Variable allerdings code gespeichert ist, gibt es als output oft errors, da eben viele Teie des Textes als echter code verarbeiter werden. Irgendwelche Ideen, wie man das lösen könnte?
3 Antworten
😊 Alles klar. Du musst alle Anführungszeichen des Textes selber verdoppeln, ansonsten beendest du ja den String dort jeweils und öffnest einen neuen.
ah ok, danke! Dann gibt es also echt keine Möglichkeit, das mit einem Text aus dem user input zu machen? Also heißt x beliebigen code als user input (Console.Read()) eingeben bzw. einfügen.. Der Text müsste ja in diesem Fall nach meinem Verständnis noch vor dem speichern in einer Variable, mithilfe von doppelten Anführungszeichen 'formatiert' werden.. Ich weiß, dass man den Input überprüfen kann, aber das reicht ja leider nicht aus. Gibt es irgendeine Möglichkeit, den user input direkt zu manipulieren bzw aufgrund nicht gegebener Kompatibilität zu korrigieren?
C# Code in einem String gibt keinen Error. Das wird als Text, nicht als Code interpretiert. Damit es als Code interpretiert wird, musst du es evaluieren (eval). Ohne das, passiert nichts. Code wird nur als Text erkannt
hm ok danke, dachte ich auch eigentlich. Warum gibt der folgende code dann ein error? (etwas verwirrend formatiert durch copy paste, string soll allerdings bis zum Ende gehen)
string input_txt = @"//using class in code
using System;
namespace EncryptStringSample
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter a password to use:");
string password = Console.ReadLine();
Console.WriteLine("Please enter a string to encrypt:");
string plaintext = Console.ReadLine();
Console.WriteLine("");
Console.WriteLine("Your encrypted string is:");
string encryptedstring = StringCipher.Encrypt(plaintext, password);
Console.WriteLine(encryptedstring);
Console.WriteLine("");
Console.WriteLine("Your decrypted string is:");
string decryptedstring = StringCipher.Decrypt(encryptedstring, password);
Console.WriteLine(decryptedstring);
Console.WriteLine("");
Console.WriteLine("Press any key to exit...");
Console.ReadLine();
}
}
}";
Also ... wenn du einfach Text speicherst und wieder ausgibst, dann spielt es keine Rolle, was da drin steht. Dann müssten wir mal schauen, wie dein Code aussieht, warum es Errors gibt.
Das andere wäre dann CodeDom, wenn du Code zur Laufzeit generierst und ausführen lässt.
Ah alles klar, danke!
Errors sind folgende:
prog.cs(19,31): error CS1525: Unexpected symbol `Please'
prog.cs(19,66): error CS1010: Newline in constant
prog.cs(39,4): error CS1010: Newline in constant
Compilation failed: 3 error(s), 0 warnings
Beziehen sich also alle auf die Zeilen mit dem String.
Ooh alles klar, dann hab ich mal wieder viel zu kompliziert gedacht haha
Ich bin dennoch gerade noch ein bisschen lost, was genau meinst du mit verdoppeln?
Danke!