समस्या को हल करने के लिए विभिन्न तरीकों में से एक जोड़े:
बस वापसी के साथ Environment.Exit बदलें। संकलक जानता है कि वापसी विधि को समाप्त करती है, लेकिन पर्यावरण को नहीं जानता है। एक्सिट करता है।
static void Main(string[] args) {
if(args.Length != 0) {
if(Byte.TryParse(args[0], out maxSize))
queue = new Queue(){MaxSize = maxSize};
else
return;
} else {
return;
}
बेशक, आप वास्तव में केवल इससे दूर हो सकते हैं क्योंकि आप सभी मामलों में 0 को अपने निकास कोड के रूप में उपयोग कर रहे हैं। वास्तव में, आपको पर्यावरण का उपयोग करने के बजाय एक int वापस करना चाहिए। एक्सिट। इस विशेष मामले के लिए, यह मेरा पसंदीदा तरीका
static int Main(string[] args) {
if(args.Length != 0) {
if(Byte.TryParse(args[0], out maxSize))
queue = new Queue(){MaxSize = maxSize};
else
return 1;
} else {
return 2;
}
}
प्रारंभ अशक्त करने के लिए कतार है, जो वास्तव में सिर्फ एक संकलक चाल है कि कहते हैं, "मैं अपने खुद के अप्रारंभीकृत चर पता लगा लेंगे, आपको बहुत बहुत धन्यवाद" है किया जाएगा। यह एक उपयोगी चाल है, लेकिन मुझे इस मामले में यह पसंद नहीं है - यदि शाखाएं आसानी से जांच कर रही हैं कि आप इसे ठीक से कर रहे हैं तो आपके पास बहुत अधिक हैं। क्या तुम सच में यह इस तरह से करना चाहता था हैं, तो कुछ इस तरह साफ होगा:
static void Main(string[] args) {
Byte maxSize;
Queue queue = null;
if(args.Length == 0 || !Byte.TryParse(args[0], out maxSize)) {
Environment.Exit(0);
}
queue = new Queue(){MaxSize = maxSize};
for(Byte j = 0; j < queue.MaxSize; j++)
queue.Insert(j);
for(Byte j = 0; j < queue.MaxSize; j++)
Console.WriteLine(queue.Remove());
}
Environment.Exit के बाद एक वापसी कथन जोड़ें। फिर, यह एक संकलक चाल के और अधिक है - लेकिन थोड़ा और अधिक कानूनी IMO क्योंकि यह मनुष्य के लिए अर्थ विज्ञान कहते हैं और साथ ही है (हालांकि यह है कि vaunted 100% कोड कवरेज से आप रखेंगे)
static void Main(String[] args) {
if(args.Length != 0) {
if(Byte.TryParse(args[0], out maxSize)) {
queue = new Queue(){MaxSize = maxSize};
} else {
Environment.Exit(0);
return;
}
} else {
Environment.Exit(0);
return;
}
for(Byte j = 0; j < queue.MaxSize; j++)
queue.Insert(j);
for(Byte j = 0; j < queue.MaxSize; j++)
Console.WriteLine(queue.Remove());
}
मैं आपको कोई संकेत नहीं दे सकता, लेकिन मुझे उम्मीद है कि आप इस पर एक संभाल पा सकते हैं। – wprl