“的定义是什么?”;计划;根据C#?

“的定义是什么?”;计划;根据C#?,c#,programming-languages,language-lawyer,specifications,C#,Programming Languages,Language Lawyer,Specifications,根据 C#中的关键组织概念是程序、名称空间、类型、成员和程序集。C#程序由一个或多个源文件组成。程序声明类型,这些类型包含成员并可以组织到名称空间中。类和接口是类型的示例。字段、方法、属性和事件都是成员的示例。在编译C#程序时,它们被物理打包到程序集中。程序集的文件扩展名通常为.exe或.dll,具体取决于它们是实现应用程序还是实现库 但他们从不解释什么是程序!程序是用于创建单个程序集的所有源文件的集合吗?或者一个程序可能由几个程序集组成 这很重要,因为后来“程序”被用来定义其他概念,比如内部可

根据

C#中的关键组织概念是程序、名称空间、类型、成员和程序集。C#程序由一个或多个源文件组成。程序声明类型,这些类型包含成员并可以组织到名称空间中。类和接口是类型的示例。字段、方法、属性和事件都是成员的示例。在编译C#程序时,它们被物理打包到程序集中。程序集的文件扩展名通常为.exe或.dll,具体取决于它们是实现应用程序还是实现库

但他们从不解释什么是程序!程序是用于创建单个程序集的所有源文件的集合吗?或者一个程序可能由几个程序集组成

这很重要,因为后来“程序”被用来定义其他概念,比如内部可访问性


澄清:在C#5.0规范的背景下,我在问什么是“程序”?

或者。基于上述定义,程序是一个概念,而不是物理定义的边界。因此,它可以是单个dll或大量程序集。

基本上,程序是可以在计算机中执行以执行特定任务的一组指令。它可以是程序集的集合,也可以是执行任务的单个程序集。这不一定是一个完整的解决方案。也就是说,它不是一个应用程序。有些人可能会说他们是一样的。但是,这是有区别的。它们不是同义词

要了解什么是程序,您应该了解程序应用程序之间的区别。应用程序和程序之间有区别

计算机程序是一系列指令, 编写以使用计算机执行指定任务。-

另一方面,应用程序是一组程序,它们协同工作以解决复杂的问题

应用程序软件是一组一个或多个程序,用于执行特定应用程序的操作。-


例如,要解决一个特定的业务问题,您可能需要一个应用程序,它在内部执行多个任务来解决该问题。

John,我认为整个混乱是由于历史和术语的不一致。在计算机时代初期,只有程序存在。每个人都把计算机程序理解为具有特定功能的计算机指令集。不管它是写在纸上,还是打在扑克牌上,还是记录在磁带上。然后,新一代的软件开发人员、语言、框架等产生了新的术语,其中一些具有相同的含义,但名称不同。我可以用“函数”(C,C++)和“方法”(C#)来说明类似的情况。一般来说,回答你的问题没有意义——它不会产生任何实际结果。

谢谢你的意见。抱歉,如果我的问题不清楚的话。我想问:在C#5.0规范的上下文中,什么是“程序”?仔细阅读,现在我认为“程序”显然是指用于创建单个程序集(exe或dll)的源文件集。我不认为规格不明确。在整个规范中,“程序”始终具有此定义。但不幸的是,它从未真正定义过。在C#6.0中可能会有所改进。

读起来很清楚。没有比发布的更好的定义了。很明显,类型中可以有多个程序集,通常是EXE和DLL。参见第3.5.2节“如果声明的T的可访问性是内部的,则T的可访问域是P的程序文本。”并且它说“程序的程序文本定义为程序的所有源文件中包含的所有程序文本”,这是一个循环定义!但我猜一个程序必须是一个单独的程序集,否则内部程序将与公共程序相同。对吗?请参阅此链接将内部的定义更改为基于程序集,而不是基于程序。我猜微软意识到程序的概念太混乱了。如果可能的话,那么可访问性域的概念并没有得到很好的定义<代码>内部可访问性定义为在程序P的程序文本中可访问,但我们当然知道这意味着在单个程序集中可访问(除非您使用的是
IntervalsVisibleToAttribute
)。从使用情况来看,很明显编译器将程序视为所有输入源文件的集合。我完全理解您的来历。澄清一下,我的意思是,在一个程序中,理论上可以由单个程序集或多个程序集组成。对于多个程序集,我同意,编译器绝对必须考虑所有输入源文件,然后确定每个源文件的内部可访问性,因为它与源文件的成员、程序集本身以及程序内的其他潜在程序集有关。我认为你出色的澄清只会进一步强化我的原始观点,或者:)。@JohnHenckel我想退一步,想想规范要求编译器实现者做什么。规范没有提到
InternalsVisileToAttribute
,因此这是一种特定于实现的行为。实施者需要让可访问性修饰符按照第3.5.2节中定义的方式工作,程序是“一个或多个源文件”的集合。程序是打包成一个物理程序集还是多个物理程序集似乎也是一个实现细节。我不认为“程序”的这么宽泛的定义在这里有用。根据这个定义,一个单一的函数