程序猿不缺对象 发表于 2019-12-26 22:51

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中的代码为什么还会编译?

smldhz 发表于 2019-12-26 23:23

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]
查看完整版本: C井无用代码会被编译器屏蔽掉吗?