मैं टुकड़े चलाने के लिए लिंककैड का उपयोग कर रोज़लिन की कोड-जनरेशन क्षमताओं को आजमा रहा हूं। लिंककैड की डंप() एक्सटेंशन विधि ऑब्जेक्ट के स्वरूपित दृश्य को परिणाम फलक में प्रस्तुत करती है।क्या रोज़लिन का "विथफू टोकन()" अनावश्यक कहता है?
http://roslynquoter.azurewebsites.net/ द्वारा उत्पन्न कोड में बहुत सारे कोड शामिल हैं जो ब्लोट जोड़ने के अलावा अन्य कुछ नहीं करते हैं। निम्न कोड return null;
आउटपुट करता है चाहे .WithFooToken(...)
कॉल पर टिप्पणी की गई हो या नहीं।
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
var syn =
SyntaxFactory.ReturnStatement(
SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)
// .WithToken(SyntaxFactory.Token(SyntaxKind.NullKeyword))
)
// .WithReturnKeyword(
// SyntaxFactory.Token(SyntaxKind.ReturnKeyword)
// )
// .WithSemicolonToken(
// SyntaxFactory.Token(SyntaxKind.SemicolonToken)
// )
;
syn.NormalizeWhitespace().ToFullString().Dump();
क्या ऐसी भाषाएं सभी भाषाओं के लिए वैकल्पिक हैं या केवल उन भाषाओं के लिए हैं जिनके पास Roslyn समर्थन पुस्तकालयों में निर्मित समझदार डिफ़ॉल्ट हैं?
उन कॉल 'वापसी/**/शून्य' जैसे मामलों में निश्चित रूप से उपयोगी हैं। क्यों वे हमेशा शामिल होते हैं, शायद कुछ कारणों से यह दो मामलों को अलग करना मुश्किल है? – svick
एक परिदृश्य जहां मुझे लगता है कि इससे कोई फर्क नहीं पड़ता कि कोड केवल आंशिक रूप से निर्मित होता है। डिफ़ॉल्ट रूप से यह 'वापसी' कीवर्ड मानता है और अर्धविराम वहां होता है, इसलिए यह उन्हें डिफ़ॉल्ट रूप से जोड़ता है - लेकिन यदि अर्धविराम अभी तक टाइप नहीं किया गया है तो क्या होगा? 'वाक्यविन्यास = वाक्यविन्यास। सेमिकोलॉन टोकन (सिंटेक्स फैक्ट्री। मिसिंग टोकन (सिंटेक्सकिंड। सैमिकोलॉन टोकन)); ' –