我正在修剪不必要的v
指令,我不确定是否应该离开
using
我所有文件中都?
在 Xamarin.Android Visual Studio类文件中,此指令 导入
中定义的命名空间... \参考Assemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ System.dll
但是,我有许多文件显式使用任何类型(可以通过淡化/灰色语法高亮显示)。但是,据我所知, .NET 原语是编译器替换using System;
命名空间中的类型的别名(System
< => int
) ,所以我不确定这是否可能导致任何问题。如果省略(在 .NET系统和 Xamarin系统之间),编译器永远不会抛出任何歧义错误,到目前为止我的测试没有导致任何问题。
答案 0 :(得分:1)
您提出这个问题是因为您在使用指令和引用的程序集之间存在误解。
using
没有引用任何程序集。
添加到项目中的引用(解决方案资源管理器中的“引用”节点,或.NET Core项目中的“依赖项”),因此它们的名称为引用< / em>的
using
仅允许您使用以前单独引用的程序集中的名称空间或类型来快捷,例如写Console.WriteLine()
代替System.Console.WriteLine()
。
您可能会问为什么在第一种情况下会出现这种差异。好吧,一个问题是,如果你有两个程序集定义具有相同名称的类型(比方说,一些XBox
相关程序集也提供Console
类型),你将也可以按照您的想法引用带有using
指令的程序集,代码中System.Console
或XBox.Console
之间没有区别,因为现在有两个Console
类型可以在“同一时间”访问。
要回到现实,您可以删除任何显式为灰色的using
指令对应用程序的行为方式没有影响,因为对程序集的引用仍将保持不变(解决方案资源管理器中“参考”节点中的任何内容都不会更改,因此您的应用程序仍然可以访问System
中定义的类型 - 只是您将无法访问例如,使用Int32
代替System.Int32
。
现在关于原始类型的笑话是C#提供了关键字来在任何时间点那些类型Int32
的快捷方式(无论你有{{} 1}}在你的文件之上或者没有)只写using System;
或int
bool
,依此类推。这就是你的指令灰显的原因,因为你通过他们的关键字使用了那些原始类型(如果有的话)。将一个System.Boolean
替换为实际类型名称int
,您将看到该指令不再灰显。
答案 1 :(得分:0)
如果它显示为灰色,则删除它。您不需要原始类型,仅适用于该命名空间内的对象,例如DateTime
或Guid
。
使用指令与正在使用的程序集无关,只是为了帮助编译器解析未使用名称空间限定的类型。任何灰色的使用都可以删除。