トップ回答者
コードの誤りがどこにあるのか分かりません

質問
-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;namespace SimpleBrowser
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new BrowserWindow());
}
}
}上記スクリプトの「Application.Run(new BrowserWindow());」部分でCS0118エラーが発生します。
下に、フォームに使用しているスクリプトも記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Simple_Browser_Prototype
{
public partial class BrowserWindow : Form
{
public BrowserWindow()
{
InitializeComponent();
}private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{}
private void button1_Click(object sender, EventArgs e)
{
if (webBrowser1.CanGoBack == true)
{
webBrowser1.GoBack();
}
}private void button2_Click(object sender, EventArgs e)
{
if (webBrowser1.CanGoForward == true)
{
webBrowser1.GoForward();
}
}
}
}私は、このスクリプトのどこにエラーの原因があるのかが分かりません。
教えていただけたら幸いです。
回答
-
class ProgramのネームスペースはSimpleBrowserに所属しています。
class BrowserWindowのネームスペースはSimple_Browser_Prototypeに所属しています。
異なるネームスペースに所属している場合は直接は参照できません。逆に、完全に同一のネームスペースか、内側のネームスペースから外側のネームスペースへは参照できます。
(同じクラス名をつけてあってもネームスペースが異なれば別のクラスとなるため、想定外のクラス名の重複等によるエラーが起こらないようになります)
修正するには、コードの先頭にあるusingによって指定したネームスペース内のクラス等を参照することができるようになります。
(usingによる参照は記述したファイル内でのみ有効です)using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using Simple_Browser_Prototype;//このファイルでは指定したネームスペースを参照できるようにする。 namespace SimpleBrowser { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new BrowserWindow()); //usingで参照しているのでネームスペースを自動解決してもらえます。 } } }
あるいはクラス名にネームスペース名を付加することで参照することができるようになります。
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace SimpleBrowser { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Simple_Browser_Prototype.BrowserWindow()); //ネームスペースを付加することで参照します } } }
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
-
理由についてはすでに指摘があるので、解決方法の一つとしての紹介です。
エラーになっている BrowserWindow の部分にカーソルを合わせると using を追加するか、名前空間をつけたクラス名にするかを選ぶ機能があります。
↓
キーボードでこのメニューを出したい場合は、その位置にカーソルを合わせた上で、Shift + Alt + F10 を押してください。
- 編集済み AzuleanMVP, Moderator 2016年11月12日 6:32
- 回答としてマーク 星 睦美 2016年11月22日 1:00
すべての返信
-
class ProgramのネームスペースはSimpleBrowserに所属しています。
class BrowserWindowのネームスペースはSimple_Browser_Prototypeに所属しています。
異なるネームスペースに所属している場合は直接は参照できません。逆に、完全に同一のネームスペースか、内側のネームスペースから外側のネームスペースへは参照できます。
(同じクラス名をつけてあってもネームスペースが異なれば別のクラスとなるため、想定外のクラス名の重複等によるエラーが起こらないようになります)
修正するには、コードの先頭にあるusingによって指定したネームスペース内のクラス等を参照することができるようになります。
(usingによる参照は記述したファイル内でのみ有効です)using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using Simple_Browser_Prototype;//このファイルでは指定したネームスペースを参照できるようにする。 namespace SimpleBrowser { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new BrowserWindow()); //usingで参照しているのでネームスペースを自動解決してもらえます。 } } }
あるいはクラス名にネームスペース名を付加することで参照することができるようになります。
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace SimpleBrowser { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Simple_Browser_Prototype.BrowserWindow()); //ネームスペースを付加することで参照します } } }
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
-
理由についてはすでに指摘があるので、解決方法の一つとしての紹介です。
エラーになっている BrowserWindow の部分にカーソルを合わせると using を追加するか、名前空間をつけたクラス名にするかを選ぶ機能があります。
↓
キーボードでこのメニューを出したい場合は、その位置にカーソルを合わせた上で、Shift + Alt + F10 を押してください。
- 編集済み AzuleanMVP, Moderator 2016年11月12日 6:32
- 回答としてマーク 星 睦美 2016年11月22日 1:00