c#使用指令是否会影响对象大小?

c#使用指令是否会影响对象大小?,c#,C#,换言之,以下因素是否会产生影响: 这: 与此相比: public class foo { public void doStuff() { bar.doStuff(); } } 连同: using a; using b; using c; public static class bar { public static void doStuff() { // do some stuff utilizing classes from a, b, and c } }

换言之,以下因素是否会产生影响:

这:

与此相比:

public class foo {
  public void doStuff() {
    bar.doStuff();
  }
}
连同:

using a;
using b;
using c;

public static class bar {
  public static void doStuff() {
    // do some stuff utilizing classes from a, b, and c
  }
}

假设foo是一个被大量使用和传递、经常序列化/反序列化等的类。但是doStuff()方法很少被调用。将其拆分为上面的第二个/第三个代码段是否有任何性能优势?

否。
使用
仅仅是关于在出现
使用
声明的源文件中可以使用哪些简单名称

基本上,
使用N
对编译器说:“嘿,如果我在这个源文件中键入简单的名称
Foo
,而您在范围中找不到任何名为
Foo
,您能检查一下命名空间
N
中是否有任何名为
Foo
”谢谢

也就是说,您可以使用省去
,通过它的完全限定名引用所有内容,并且您根本没有更改编译器的IL输出

将其分解为上面的第二/第三个代码片段是否有任何性能优势


根据上面的解释,不。

使用
指令只是一种不必限定类的方法。因此,您可以使用

using System;
Console.Beep()

但是,项目中包含的引用程序集确实会增加总体二进制大小。

即使如此,它也只是一个方便的简写;您始终可以使用完全限定名(如果需要,可以使用::)谢谢先生们。这是否也意味着在对象的类文件中不引用a、b和c中的类没有任何好处?i、 e.在运行时,a、b、c程序集以最佳方式被引用?@mikey:据我所知,编译器会删除未使用的引用程序集。也就是说,它们不包含在程序集的元数据中,因此不会加载。我必须给你+1,只是为了正确地将其称为using指令,而不是错误地将其称为using语句:),因此程序集不会被引用,除非我通过项目引用它们,或者除非它们在代码中实际被引用。using指令实际上并没有告诉编译器引用它们,只有在它们被实际使用的情况下?很高兴知道我一直在无缘无故地从我的类中删除“using System.Linq;”)是的,
using
指令不会告诉编译器包含引用的程序集。但是,通过在项目中引用它们,您可以告诉csc编译器在编译时在何处找到要链接到的程序集。(即,
/r
开关的用法。)引用的程序集将被复制到bin/{Release,Debug}/文件夹,无论您的代码是否实际使用它们。
using System;
Console.Beep()