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()