我试图在没有 else 情况的情况下实现“return if”/“return value if”,因为我只想在条件有效时返回或返回一个值。
我知道,有if (condition) return;
or if (condition) return value;
但我想让代码更清晰一些,并且最好使用该语法,因为它更具可读性。
我听说罗斯林这是可能的,并在这里阅读问题及其答案:有没有办法在 C# 中实现自定义语言功能? https://stackoverflow.com/questions/11749222/is-there-a-way-to-implement-custom-language-features-in-c但我不知道如何实施它。
所以代码会是这样的:
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;
}
}
知道我该如何解决这个问题吗?我开始尝试Roslyn.Compilers.CSharp
-namespace 但我不知道如何开始实施。
如果您可以为此生成正确的 IL,那么这应该可行。
因为这不是新的 CLR 功能,所以您不需要对 dot net core 执行任何操作,只需使用 Roslyn。
为此,您有两种选择,
一种是保留 Roslyn 不变,并将新语法重写为相应的 C# 语法,然后按常规进行编译。
第二个选项是添加将新语法编译到您自己的 Roslyn 中并用它编译代码的功能,因为 Roslyn 是开源的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)