문제를 해결하기 위해 여러 가지 방법의 몇 :
그냥 수익률 Environment.Exit을 대체합니다. 컴파일러는 return이 메서드를 종료하지만 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을 사용하고 있기 때문에 실제로는 그만 벗어날 수 있습니다. 실제로, Environment.Exit 대신 int를 리턴해야합니다. 특히이 경우,이 나의 선호하는 방법 정말 "나는 대단히 감사합니다, 내 자신의 초기화되지 않은 변수를 알아낼 것이다"라고 단지 컴파일러 트릭 null로
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 후 return 문을 추가합니다. 다시, 이것은 컴파일러 트릭의 더 -하지만 인간에 대한 의미를 추가하기 때문에
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