1

奇妙な問題が発生し、最終的に修正しました。他の人がこのトピックを検索して答えを得られるように、この経験を共有したいだけです. 2 つの部分クラスを定義し、「~の定義が含まれていません」というエラーでコンパイルしました。2つのクラスが個別のクラスだったときに機能したので、それは奇妙でした。

コードは次のとおりです。

前: Foo1.cs

public class foo1{public void xyz(){}}

Foo2.cs

public class foo2{}

後: Foo1.cs

public partial class foo1{  public void xyz(){}}

Foo2.cs

public partial class foo1{}

コンパイルは「MyNamespace.foo1にはxyzの定義が含まれていません」と述べました。でも授業が部分的じゃない時はxyzが良かった!これは、名前空間が異なることが原因である可能性があります。しかし、私はそれを疑いました。名前空間が異なると、コンパイルされないためです。

やっとわかった。問題は Foo1.cs にあり、名前空間は定義されていませんでしたが、Foo2.cs で定義されていました。部分クラスを定義する前に、コンパイラは Foo1.cs に既定の名前空間を提供しました。これは、Foo2.cs で明示的に定義されたものと同じです。ただし、部分クラスでは、コンパイラは部分クラスに既定の名前空間を提供しません。これが、第三者が foo1.xyz() を呼び出したときにコンパイラが不平を言う理由です。

名前空間を定義しない場合を除いて、単一の cs ファイルごとに名前空間を常に明示的に定義するという教訓を学びました。

4

1 に答える 1

1

名前空間は常に明示的に定義してください。

于 2012-11-09T06:12:11.253 に答える