为什么.NET警告"未使用的变量"而不是"未使用的参数"?

Dha*_*ana 2 .net

为什么.NET警告"未使用的变量"而不是"未使用的参数"?(我相信Java在两种情况下都会发出警告.)

为什么.NET不关心"未使用的参数"?

mqp*_*mqp 9

在我看来,你可能真的想要保留未使用的参数有几个原因; 例如,假设一个应用程序链接到您的DLL,并且您在DLL中进行了更改 - 为了避免重新编译应用程序,您可能希望保持函数签名相同.

我想不出任何类似的原因,你想要留下未使用的变量和未注释掉.


Dev*_*inB 7

这不是技术上的答案,如果有的话,我当然不知道技术答案.但是,既然你问过.

未使用的变量完全不附加.它们没有任何东西的锚点,除了占用堆栈空间外,它们几乎没有任何东西.因此,没有正当理由在完整的程序中使用未使用的变量.你可以声明为你的编码,因为你知道你的变量需要他们以后,和你只是实现功能的一部分,现在,但一旦你的应用是用于生产的,未使用的变量什么都不做,除了占用空间.


您可能拥有/保留未使用参数的原因有很多.首先,您必须重构引用该函数的每一行代码.这不一定容易或可能.

如果你有一个编写的API,实际上不可能改变所有这些代码行.因此,在某些情况下,您必须保留未使用的参数以保持API一致性.

其次,如果您坚持或实现一个接口,那么您没有删除未使用的变量的选项,它被强加给您.即使您不需要变量中的任何信息,也必须实现正确的调用,因此最终会使用未使用的参数.

第三,如果你正在创建一个新的API,并且有很多东西需要的信息,而不是这个特定的调用,为了保持一致,它可以放在那里.或者,如果它是将在下一个版本中实现的功能,那么您也可以在第一次调用该权限,这样您的下一个版本就不会成为一个破坏版本.


最终,不同之处在于参数是给您的信息,因此您可能并不总是需要全部使用,但变量是您所说的立即需要的信息.由于局部变量是立即的并且不会影响范围之外的任何事情,因此摆脱未使用的变量要容易得多并且没有任何缺点.