C# &引用;与文件系统中的文件进行一对一的通信;

C# &引用;与文件系统中的文件进行一对一的通信;,c#,specifications,language-specifications,C#,Specifications,Language Specifications,我在报纸上读到: 源文件通常与文件系统中的文件有一对一的对应关系,但这种对应关系不是必需的 这到底是什么意思?正如前面的一行所说: 源文件是Unicode字符的有序序列 这意味着“源文件”不一定必须是文件系统上的文件。它可以是表示UTF-16中字符的任何旧字节流。它可以来自内存流,也可以来自网络,也可以来自任何老地方。但通常它是文件系统中的一个文件。我认为它的字面意思是每个源文件都由系统中的一个文件表示 例如,假设我有一些源代码: Using System; namespace Test {

我在报纸上读到:

源文件通常与文件系统中的文件有一对一的对应关系,但这种对应关系不是必需的


这到底是什么意思?

正如前面的一行所说:

源文件是Unicode字符的有序序列


这意味着“源文件”不一定必须是文件系统上的文件。它可以是表示UTF-16中字符的任何旧字节流。它可以来自内存流,也可以来自网络,也可以来自任何老地方。但通常它是文件系统中的一个文件。

我认为它的字面意思是每个源文件都由系统中的一个文件表示

例如,假设我有一些源代码:

Using System;

namespace Test 
{
    public class Program 
    {
        private static void Main (string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
这可以作为
Program.cs
保存到文件系统中。我们现在有一些源代码,它们由系统上的单个文件表示

但这种通信不是必需的


表明系统上并不总是存在源文件。例如,源代码可以作为“Unicode字符序列”存在,可以存储在内存中的某个位置

使用visual studio,您可以在项目中“链接”源文件。 如果将源文件放置在项目中,并将相同的源文件链接到不同的项目中(即,在两个不同的项目中共享相同的源代码),则最终将有两个源文件链接到单个文件

我通常在有多个项目的解决方案中使用此功能:共享源代码如下:

[assembly: AssemblyVersion("1.2.3.0")]
[assembly: AssemblyFileVersion("1.2.3.0")]

因此,在编写时,我的解决方案中的每个程序集都有相同的版本号。

有趣的是,我发现其他编程语言也有类似的定义,其中术语
源文件
编译单元
替换。这一术语在C语言定义中也有提及,但在这里没有使用,尽管我认为它更有意义。我猜作者想指出的是,“你看到的不一定是文件中的内容”,反之亦然。由于您可能看不到某些内容(新行可以是
\n
\n\r
\r\n
,但您看不到这些内容),因此在
字符串中使用特殊字符(不可见字符)
文本中存在问题。