使用roslyn扩展c#语法.我知道,有if(condition)return;或者如果(条件)返回值;但我希望代码更清晰一些,因为它更具可读性,所以拥有这种语法会很好。我听说roslyn可以做到这一点,并在这里回答了这个问题:IsthereawaytoimplementcustomlanguagefeaturesinC#?但我不知道如何实施。所以代码应该是这样的:publicclassTestclass{publicstaticvoidMain(String[]args){Testclasst=newTestclass();t.TestMyClassWithVoid();布尔成功=t.TestMyClassWithInt(3)==3;boolfail=t.TestMyClassWithInt(2)==2;}publicvoidTestMyClassWithVoid(){intvalue=GetValueFromSomeWhere();如果值==3则返回;DoSomeOtherStuffSinceValueIsNotThree();}publicintTestMyClassWithInt(intvalue){如果值==3则返回值;DoSomeOtherStuffSinceValueIsNotThree();返回-1;有什么办法可以解决这个问题吗?我开始尝试使用Roslyn.Compilers.CSharp-命名空间,但我不知道如何开始实施它。如果您可以为此生成正确的IL,这应该可以工作。由于这不是新的CLR功能,因此您不需要做一些netcore,只需Roslyn。为此,您有两种选择,一种是保持Roslyn不变,将新语法重写为相应的C#语法,然后正常编译。由于Roslyn是开源的,第二个选项是添加将新语法编译到您自己的Roslyn中的能力,并使用它来编译您的代码。这是一个替代建议,可能适用于正在寻找roslyn扩展点的人。它甚至可以作为nuget包使用!为您的语法创建分析器和代码修复提供程序。基本上,无论您选择何种语法,您都会得到一条红色的波浪线,并带有一个自动修复提示,可让您将其转换为常规的C#等价物。它还可用于验证库的使用情况、检查正确的属性是否位于正确的位置、检测常见的代码气味等。阅读本文中有关代码分析器的更多信息:https://msdn.microsoft.com/en-us/magazine/dn879356.aspx那个链接的快速总结(但绝不是替代):以上就是学习C#教程:使用roslyn展开c#语法分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
