2016-07-15 18 views
1

私はc# language specificationで読んだことがある:「ファイルシステム内のファイルと1対1の対応」

ソースファイルは、通常、ファイルシステム内のファイルと1対1で対応しているが、この対応は不要です

これはどういう意味ですか?ラインとして

+0

面白いことに、他のプログラミング言語でも同様の定義がありました。ここでは、「ソースファイル」という用語は「コンパイル単位」に置き換えられています。この用語はC#言語定義でも言及されていますが、ここでは使用されませんが、より意味をなさないと思います。 –

+0

私は、 "あなたが見ているものは、必ずしもファイルの内側にあるものではない"ということを指摘したいと思います。何も見えないかもしれないので(新しい行は '\ n'または' \ n \ r'または '\ r \ n'で、これはあなたには見えません)、特殊文字を使ってどこに問題があるのか​​疑問があります(目に見えない文字)を 'string'リテラルで返します。 – Sinatr

答えて

1

それが言う前に:

ソースファイルが「ソースファイル」を意味Unicode文字の順序付けられたシーケンス

は必ずしも上のファイルである必要はありませんですファイルシステム。これは、UTF-16で文字を表すバイトの古いストリームでも可能です。メモリストリーム、ネットワーク、または古い場所から来る可能性があります。しかし、は通常です。ファイルシステム上のファイルです。

0

文字通り、各ソースファイルがシステム上の1つのファイルで表されていると思います。例えば

、私はいくつかのソースコードを持っていると言う:

Using System; 

namespace Test 
{ 
    public class Program 
    { 
     private static void Main (string[] args) 
     { 
      Console.WriteLine("Hello World!"); 
     } 
    } 
} 

これはProgram.csとしてファイルシステムに保存することができます。システム上の1つのファイルで表されるソースコードがいくつかあります。

が、この対応は

は、ソースファイルが常にシステム上に存在していないことを示唆している必要はありません。例えば、ソースは "メモリのどこかに格納することができる"代わりに "Unicode文字列"として存在する可能性があります。

0

ビジュアルスタジオでは、プロジェクト内のソースファイルを「リンク」することができます。 プロジェクトにソースファイルを配置し、同じソースファイルを別のプロジェクトにリンクすると(つまり、2つの異なるプロジェクトで同じソースコードを共有する場合)、1つのファイルに2つのソースファイルがリンクされます。私は通常、複数のプロジェクト有する溶液でこの機能を使用

:遵守ときだから、私の溶液中のすべてのアセンブリは、同じバージョン番号を持つ

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

:共有のソースコードを、このようなものです。

関連する問題