C井无用代码会被编译器屏蔽掉吗?
我编了一个C井程序,这个程序一定不会输出"123"的输出结果为:
hello world
5050
static void Main(string[] args)
{
try
{
Console.WriteLine("hello world");
int s = 0;
for (int i = 1; i <= 100; i++)
{
s += i;
continue;
Console.WriteLine("123");
}
Console.WriteLine(s);
return;
Console.WriteLine("123");
}
catch (Exception _123)
{
Console.WriteLine("123");
Console.WriteLine(_123.Message);
}
finally { Console.ReadKey(); }
}
编译完又反编译了一下,结果return和continue之后的代码与多余的命名空间都没出现,但出现了try和catch
难道编译器会认为return和continue之后的代码都是多余的吗?
如果是的话Console.WriteLine("hello world");这句明知道不会有异常,那么catch中的代码为什么还会编译?
https://docs.microsoft.com/en-us/dotnet/api/system.console.writeline?view=netframework-4.8
Exceptions
IOException
An I/O error occurred.
ArgumentNullException
format is null.
FormatException
The format specification in format is invalid.
还是可能会异常的 比如io
页:
[1]