1

複数のプロジェクトを含むソリューションを見る場合:

1) 他のプロジェクトへの参照を追加するのはなぜですか? 継承しか使えないの?

2) Visual Studio を使用して参照を追加した後、プロジェクトを名前空間システムに追加する必要があるのはなぜですか? 例: using myReferenceProject;IDE がそれを行うと思いました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using myReferenceProject;
using System.Data.SqlClient;
using System.Data;
4

3 に答える 3

9

1) なぜ他のプロジェクトを参照するのですか? 継承を使用することはできませんか???

この 2 つはまったく異なる概念です。

別のアセンブリへの参照を追加すると、基本的に、「このコードの一部を使用できるようにしたい。このコードが存在することをコンパイラに認識させ、オプションで出力ディレクトリにコピーして、実行時にも存在するようにしてください。」

コンパイラがその型を認識していない場合、継承を使用してその型から派生したクラスを作成するにはどうすればよいでしょうか?

2) Visual Studio IDE を使用して参照を提供した後、プロジェクトを名前空間システムに追加する必要があるのはなぜですか?

アセンブリと名前空間も異なる概念であるためです。usingディレクティブは、単に「コード内で型を参照するときは、これらの名前空間を調べて解決してください」とコンパイラーに伝えFooます。その型は、参照した任意のアセンブリから取得できます。

アセンブリと名前空間の違いを理解することは非常に重要です。多くの場合、同じように名前が付けられますが(多くFoo.Bar.dllの場合、名前空間で型を提供しますFoo.Bar)、概念的には異なります。

于 2012-07-09T11:05:00.910 に答える
0

1)なぜ他のプロジェクトを参照するのですか?継承だけを使用することはできませんか?

この質問は意味がありません。継承はプロジェクト参照と何の関係がありますか。詳細を教えていただけますか?

2)Visual Studio IDEを使用して参照を提供した後、プロジェクトを名前空間システムに追加する必要があるのはなぜですか?

別のアセンブリを参照するアセンブリ(プロジェクトへの参照を追加すると発生する)と、ファイルでディレクティブを使用するときに発生するクラスを見つける場所を知っている言語との間には固有の違いがあるためです。using

たとえば、プロジェクトに。という名前のクラスを作成するとしますTextBox。次に、別のファイルでそのクラスを使用します。TextBoxカスタムクラスを参照しているか、参照されているアセンブリ内の別のクラスを参照しているかを言語はどのように認識しますか?その質問への答えは名前空間です。クラス名をその名前空間で完全に修飾することにより、使用しているクラスをコンパイラーに通知します。

ディレクティブは、usingクラス(またはその名前空間内の他のクラス)を使用するたびにではなく、ファイルごとに1回名前空間を指定する方法です。したがってTextBox、1つのファイル内でクラスを複数回参照する必要がある場合は、毎回これを記述する必要はありません。

MyCodebase.MyAssembly.MyNamespace.MyOtherNamespace.SomethingElse.TextBox

代わりに、using名前空間全体のディレクティブを含めるので、次のように記述するだけで済みます。

TextBox
于 2012-07-09T11:09:14.693 に答える
0

プロジェクトは、有効なアセンブリ ファイルにコンパイルする必要がある、自己完結型のコンパイル可能なユニットです。そのため、他のプロジェクトとは別にコンパイルできるようにするために、すべてのプロジェクトが必要とする参照を明確に指定する必要があります。

プロジェクト レベルでの継承の概念はありません。

于 2012-07-09T11:06:10.553 に答える