在我的C#代码中,我可以访问a MyNamespace.Exception和a System.Exception.当我想要捕获其中一个例外时,理想情况下,我完全符合我想要捕获哪一个或使用别名来说清楚.但是,我担心只需输入就可以了catch(Exception).我假设编译器会将其标记为不明确的名称,但事实并非如此.它总是假设我想要一个MyNamespace.Exception明显留下漏洞的许多例外,如果我打算使用一个错过捕获System.Exception.这不仅仅是一个问题Exception,我也有例外MyNamespace.ArgumentException.
所以我的问题是为什么编译器不会抱怨模糊的异常类型?另外,你会如何防止这个问题?
为什么编译器不会抱怨模糊的异常类型?
可能是因为你说的方式并不含糊.如果你说:
using MyNamespace;
using System;
class P
{
void M()
{
try { ... } catch(Exception) { ... }
Run Code Online (Sandbox Code Playgroud)
那么它是模棱两可的,因为不清楚哪个"使用"指令是相关指令; 两者都可以工作.
如果你说
using System;
namespace MyNamespace
{
class P
{
void M()
{
try { ... } catch(Exception) { ... }
Run Code Online (Sandbox Code Playgroud)
然后它不含糊; 当前命名空间中的内容优先于using指令导入的内容.
你会如何防止这个问题?
我不会首先考虑这种情况.将您的类型命名为与常见系统类型相同是令人困惑,危险并且违背良好的设计原则.
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |