Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET程序集应该有多大(小)?_C#_.net_.net Assembly_Internal - Fatal编程技术网

C# .NET程序集应该有多大(小)?

C# .NET程序集应该有多大(小)?,c#,.net,.net-assembly,internal,C#,.net,.net Assembly,Internal,不幸的是,C#没有类似于C++的friend。因此,例如,为了解决类似于经典矩阵/向量乘法示例的问题(通过友好的矩阵和向量可以获得效率,这样每个类都可以访问另一个类的私有成员),我必须定义类成员internal 现在我知道我自己了,不恰当的封装迟早会导致混乱的代码。因此,我希望保持内部宇宙尽可能小 这将导致非常小的组件 这有什么缺点吗,或者这无关紧要吗?如果您不喜欢内部原因,它太开放(对api的其余部分),请将需要相互开放的类作为一个单独的微组件,只包含这一小部分类。您始终可以将该程序集嵌入主a

不幸的是,C#没有类似于C++的
friend
。因此,例如,为了解决类似于经典矩阵/向量乘法示例的问题(通过友好的矩阵和向量可以获得效率,这样每个类都可以访问另一个类的私有成员),我必须定义类成员
internal

现在我知道我自己了,不恰当的封装迟早会导致混乱的代码。因此,我希望保持
内部
宇宙尽可能小

这将导致非常小的组件


这有什么缺点吗,或者这无关紧要吗?

如果您不喜欢内部原因,它太开放(对api的其余部分),请将需要相互开放的类作为一个单独的微组件,只包含这一小部分类。您始终可以将该程序集嵌入主api程序集中


这既可以使您的类彼此开放,又不允许其他任何人进入(除非他们公然忽略您的程序集结构,并在助手程序集中放置比其名称所包含的内容更多的内容。但是谁会做这样的事情呢?!:)

如果您不喜欢内部原因,它太开放(对您的api的其余部分而言),使那些需要相互开放的类成为一个单独的微组件,其中只包含这一小部分类。您始终可以将该程序集嵌入主api程序集中


这应该使您的类彼此开放,并且不允许任何其他人进入(除非他们公然忽略您的程序集结构,并在助手程序集中放置超出其名称所包含的内容。但是谁会做这样的事情?!:)

除非我不明白:

不幸的是,C#没有像C++的朋友一样的东西


确实存在。它可能不是C++所具有的,但听起来它会起作用。

< p>除非我不理解:

不幸的是,C#没有像C++的朋友一样的东西


确实存在。它可能不是C++所具有的,但听起来它会起作用。

< p>回答标题中的问题:程序应该是多么小?

没有关于组件尺寸的特殊要求或建议*

*理论上,由于需要在更多的地方查找信息,数量庞大的程序集(可能有数千个)可能会降低加载速度

选择尺寸时,请考虑:

  • 适当封装
  • 易于编辑(大量解决方案与多个大型解决方案相比,在构建/编辑/部署时都有缺点和好处)
  • 技术限制(如GAC部署、部分受信任代码、anyCPU/x86/x64要求)

回答标题中的问题:组件应该有多小

没有关于组件尺寸的特殊要求或建议*

*理论上,由于需要在更多的地方查找信息,数量庞大的程序集(可能有数千个)可能会降低加载速度

选择尺寸时,请考虑:

  • 适当封装
  • 易于编辑(大量解决方案与多个大型解决方案相比,在构建/编辑/部署时都有缺点和好处)
  • 技术限制(如GAC部署、部分受信任代码、anyCPU/x86/x64要求)

您是否认为使用公共界面很慢?我猜想您正在通过某个属性/索引器访问第I个和第j个元素。我认为Microsoft JIT编译器足够聪明,可以内联琐碎的属性访问,所以除了破坏封装的代码之外,你不会买任何东西。对于过于模糊、研究不足的性能相关问题,答案总是如此。。。还有,“过早优化是万恶之源”,对吗程序集是可独立版本代码的最小单元。如果两个东西不能独立地进行合理的版本控制,那么不要将它们放在不同的程序集中。您是否认为使用公共接口很慢?我猜想您正在通过某个属性/索引器访问第I个和第j个元素。我认为Microsoft JIT编译器足够聪明,可以内联琐碎的属性访问,所以除了破坏封装的代码之外,你不会买任何东西。对于过于模糊、研究不足的性能相关问题,答案总是如此。。。还有,“过早优化是万恶之源”,对吗程序集是可独立版本代码的最小单元。如果两个东西不能独立地进行合理的版本控制,那么不要将它们放在不同的程序集中。是的,但是朋友类不会。我认为<代码>内部< /代码>不够严格,朋友程序集不起作用。您需要哪种类型的约束,这要求类在程序集中是私有的而不是内部的?是的,但是朋友类不需要。我认为<代码>内部< /代码>不够严格,朋友程序集不起作用。您需要哪种类型的约束来要求类在程序集中是私有的而不是内部的?