[英]why would someone fully qualify an Object in code when there is a using statement declared?
我正在查看已聲明正確的using語句的代碼,但是由於聲明了using語句的事實,當代碼中的對象不需要時,它們是完全限定的。
是否有理由說明對象是完全合格的,但仍聲明了using語句?
也許在對象完全限定之后添加了using語句? 另一個不太可能的原因是名稱空間與使用中的對象存在沖突。
為什么有些人(例如我) 故意這樣做:
當使用相對少見的類時,它將提供有關該類的很多信息。 而且我喜歡在代碼中放入信息。 考慮:
System.Runtime.Serialization.Formatters.Soap.SoapFormatter formatter =
new SoapFormatter(); // .NET 2
要么
var formatter = new // .NET 3
System.Runtime.Serialization.Formatters.Soap.SoapFormatter.SoapFormatter();
我完全意識到這種不一致,並且“何時使用”是任意的。 但是,對於閱讀此代碼的人來說,很多問題在出現之前都會得到回答。
Intellisense可以回答相同的問題,但並非總是可用。
有時,命名空間會發生沖突-多個命名空間中存在相同名稱的類,並且完全限定它們的作用即可將它們區分開。
可能是因為兩個導入的名稱空間中的名稱沖突。
例如, AA
的類型稱為Foo
( AAFoo
),而BB
的類型稱為Foo
( BBFoo
)。 如果您這樣做:
using A.A;
using B.B;
// class definitions... etc
var x = new Foo(); // which foo?
如果您不想完全符合條件,可以這樣做:
using A.A;
using B.B;
using AFoo = A.A.Foo;
using BFoo = B.B.Foo;
// class definitions... etc
var x = new AFoo();
為什么不簡單地刪除using BB;
聲明? 好吧,假設您還使用了BBBar
, AAFooBar
, BBQux
和AAQuux
。 您將要保留using
語句。
原因很多。 一些可能是:
一個很好的問題是Visual Studio中是否存在消除這種冗余的方法。 我不知道這種工具(可能類似於CodeRush),但也許有人會在這里發表評論。
當您使用一些內置的重構時,它們有時會完全限定對象。 這樣可以更安全地避免編譯器混亂。
我可以想到一些原因:
發生這種情況的原因之一:自動生成的代碼。 (例如Windows Forms設計器生成的代碼)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.