C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: RootNamespaceとは何でしょうか


(過去ログ 38 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■19879 / inTopicNo.1)  RootNamespaceとは何でしょうか
  
□投稿者/ ぽたる (1回)-(2008/06/01(Sun) 01:55:48)

分類:[.NET 全般] 

C#のプロジェクトファイル(.csproj)をエディタで開くと
<RootNamespace>WindowsFormsApplication1</RootNamespace>
のような項目がありますが、
このRootNamespaceとは具体的にどういう意味を持っているのでしょうか?

例えば、複数のプロジェクトファイルを同一のソリューション内で扱うとき、
それぞれのプロジェクトファイル中に書かれたRootNamespaceが違うものだった
場合などに何かトラブルは起こるのでしょうか?

ご存知の方おられましたらご教示願います。
よろしくお願いいたします。
引用返信 編集キー/
■19881 / inTopicNo.2)  Re[1]: RootNamespaceとは何でしょうか
□投稿者/ 魔界の仮面弁士 (754回)-(2008/06/01(Sun) 03:04:56)
No19879 (ぽたる さん) に返信
> C#のプロジェクトファイル(.csproj)をエディタで開くと
> <RootNamespace>WindowsFormsApplication1</RootNamespace>
> のような項目がありますが、

Visual Studio の開発環境では、『既定の名前空間』の項目として知られる物です。
これは、Properties.Settings や Properties.Resources の名前空間に用いられており、
上記の場合、global::WindowsFormsApplication1.Properties.Settings というクラス名を成します。

また、新たにクラス等を作る際には、ここで指定された名前空間が用いられて

namespace WindowsFormsApplication1
{
    class Class1
    {
    }
}

のようなコードが記述されます。ただし、クラスを追加した後で <RootNamespace> を切り替えても、
既存のコードの名前空間に対しては影響を与えません。(先述した Settings/Resources には影響があります)
後から <RootNamespace> の設定を変えても、上記は、global::WindowsFormsApplication1.Class1 を意味します。


一方、VB の場合は若干事情が異なります。
基本的な意味は同様ですが、.vbproj の場合、<RootNamespace>は『ルート名前空間』の項目にあたります。
これは VBC.EXE のコンパイラオプションである /rootnamespace: パラメータに直結しているため、
C# とは異なり、既存のコード中の全ての型宣言の名前空間に対しても影響を与えます。たとえば

Namespace Sample
    Public Class Class1
    End Class
End Namespace

のようなコードがあった場合、これは <RootNamespace>WindowsFormsApplication1</RootNamespace> の
影響を受けて、Global.WindowsFormsApplication1.Sample.Class1 というクラス名を意味する事になります。


なお、<RootNamespace> は C# では必須ですが、VB では空文字列にする事もできます。

引用返信 編集キー/
■19903 / inTopicNo.3)  Re[2]: RootNamespaceとは何でしょうか
□投稿者/ ぽたる (2回)-(2008/06/01(Sun) 12:46:44)
No19881 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士さん
お答えいただきありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -