Ich versuche, ein "return if"/"Rückgabewert if" ohne einen anderen Fall zu implementieren, da ich nur einen Wert zurückgeben oder zurückgeben möchte, wenn eine Bedingung gültig ist.Erweitern C# -Syntax mit Roslyn
Ich weiß, es gibt die if (condition) return;
oder if (condition) return value;
, aber ich möchte den Code ein bisschen sauberer und es wäre schön, diese Syntax zu haben, da es besser lesbar ist.
Ich hörte mit Roslyn das ist möglich und lies die Frage mit seinen Antworten hier: Is there a way to implement custom language features in C#? aber ich habe keine Ahnung, wie man es implementiert.
So würde der Code so etwas wie diese:
public class Testclass
{
public static void Main(String[] args)
{
Testclass t = new Testclass();
t.TestMyClassWithVoid();
bool success = t.TestMyClassWithInt(3) == 3;
bool fail = t.TestMyClassWithInt(2) == 2;
}
public void TestMyClassWithVoid()
{
int value = GetValueFromSomeWhere();
return if value == 3;
DoSomeOtherStuffSinceValueIsNotThree();
}
public int TestMyClassWithInt(int value)
{
return value if value == 3;
DoSomeOtherStuffSinceValueIsNotThree();
return -1;
}
}
eine Idee, wie ich dieses Problem lösen könnte? Ich fing an, mit dem Roslyn.Compilers.CSharp
-namespace zu versuchen, aber ich habe keine Ahnung, wie man mit dem Implementieren beginnt.
laufen, was ich aus dem Code verstehen „zurück, wenn Wert == 3; " Wenn der Wert 3 ist, möchten Sie den Restcode der Methode nicht ausführen, richtig? –
@AnkitkumarBhatt yep! das gleiche wie 'if (value == 3) return;' aber andersherum –
Sie können goto mit label verwenden, setzen Sie einfach goto in die if-Bedingung. Deine Absicht wird auf diese Weise gelöst, denke ich. –