• ベストアンサー

C#でほかのファイルにある自作クラスを使用したい場合

最近Javaから移ってきたばかりのC#初心者です。 依然作ったことのあるほかのファイルにある自作クラスを 新しいファイルの自作クラスで使用したい場合、どうすれば よいのでしょうか。 Form1.cs(8,7): error CS0246: 型または名前空間名 'Calc1' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 Form1.cs(12,19): error CS0246: 型または名前空間名 'Calc' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 上記のようなエラーが発生してしまいます。 なにとぞご助力をお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2>しかし、やはりうまくいきませんでした。 #1で言われているような、namespace, using 指定と参照設定でうまくいくと思うんですけど・ 自作クラスを補足することはできますか?

tatapata
質問者

お礼

申し訳ありませんでした。 教えていただいた方法で再度試してみたところ、 何とか動作しました。 何か気づかないところでミスをしていたみたいです。 本当に申し訳ありませんでした。 ありがとうございました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

自作クラスを csc /target:library MyClass.cs のようにコンパイルすれば、Dll を作成することができます。 DLLとして作成しておけば、参照設定すればいいです。

tatapata
質問者

お礼

BLUEPIXYさん、ありがとうございます。 しかし、やはりうまくいきませんでした。 エラー内容はまったく同じです。 よろしければ、引き続きご助力いただけますと幸いです。

回答No.1

自作クラスのnamespaceをusingにて宣言してしまえばいいのではないかなと思います。 ex: //ClassTest.cs using System; using nmCalc; using nmCalc1; namespace CalcTest { public class CalcTest { public CalcTest() { Calc1 foo = new Calc1(); Calc bar = new Calc(); // using を使いたくないのであれば // nmCalc1.Calc1 foo = new nmCalc1.Calc1(); // nmCalc.Calc bar = new nmCalc.Calc(); } } } namespace nmCalc1 { public class Calc1 { public Calc1(){} } } //Calc.cs namespace nmCalc { public class Calc { public Calc(){} } }

参考URL:
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_002/cs2_002_01.html
tatapata
質問者

お礼

Celebrityさん、ありがとうございました。 頂いたサンプルのとおり、 ClassTest.csとCalc.csでコンパイルしてみたところ、 Calc1のクラスは認識したみたいなのですが、別ファイルにある Calcクラスはいまだに ClassTest.cs(3,7): error CS0246: 型または名前空間名 'nmCalc' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 …とのエラーが出てしまいます。 よろしければ、引き続きご助力していただけますと幸いです。 よろしくお願いいたします。

関連するQ&A

  • c#でのプログラムについて

    c#でのプログラムについて お世話になります。 c#初心者です。今までエクセルVBAでの簡単なプログラム経験があります。 コードファイル(CodeFile1.cs)からフォーム(Form1)を表示させるプログラム(初歩) ですでにいきづまっています。 ネットで見つけた、 「Form1 Form = new Form1();  Form.Show();」 と記述しましたら、下にあるエラー一覧で 「型または名前空間名'Form1が見つかりませんでした。usingディレクティブまたはアセンブリ  参照が不足しています。」と出ています。 なので、コードファイル(CodeFile1.cs)の上の方に 「using System.Windows.Form;」 と追加したのですが、まだエラー内容に変わりはありませんでした。 どうすればフォーム(Form1)を表示させるプログラムが出来るか どなたか、お教え頂きたく宜しくお願い致します。

  • C# usingの必要性について

    C#について質問させてください。 サブディレクトリにあるcsファイルに記述されているクラスを参照する場合、usingディレクティブでサブディレクトリ名を宣言しないとクラス名のみでの宣言はできませんか? ちょっと伝わりにくいかと思うので、具体例を記載します。 プロジェクト直下にmain.csというファイルとSubというディレクトリがあり、Subディレクトリにsub.csというファイルがあるとします。 main.csのmainメソッドの中でSub s = new Sub();のような記述をしたい場合、using Sub;という記載は(名前空間の解決のために)必要ですか? 私は必要と考えているのですが、usingディレクティブがなくても参照できているコードがありましたので、疑問に思い質問させて頂きました。

  • C#のargs[0].Successの記述

    if (System.Text.RegularExpressions. Regex.Match(line, args[0].Success)) の記述で, エラー 1 'string' に 'Success' の定義が含まれておらず、型 'string' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 といったコンパイルエラーが出るようなのですが、usingディレクティブで追加しないといけない記述とかあるのでしょうか? よろしくお願い致します。

  • VisualStudio2003 リビルドできない

    VisualStudio2003初心者です。 会社で使用しているC#プログラムに修正の必要が出ており、そのプログラムを作成した担当が既に退社し連絡がつかないため、自分が手探りながらトライしています。 プログラムは、メニューにあたるexeファイル(TUmenu.exe)を起動し、そこから業務毎のexeファイル(TU0201.exe等)を起動させていく....という仕組みです。 通常使用するexeファイルとは別に、担当がソースファイルを残しており、slnファイルやcsファイルなどが業務ごとに存在していましたので、そのcsファイルのコードを編集→slnファイルでビルドし、exeファイルを古いものと差し替えようと考えています。 csファイルのコードは編集が完了しており、あとは編集した内容を適用したexeファイルを作るだけなのですが、slnファイルを開き、ビルド時にエラーが複数出て完了できません。 フォルダ階層について: 少し分かりにくいですが、ソースフォルダとして一まとめになっているフォルダの中身を書いておきます。 (1)ソースという名前のフォルダ→(2)TUmenuやTU0101やTU0201やLIBなど、業務毎に名前の付いたフォルダ→(3)例えばTU0101のフォルダ内には、TU0101.csやTU0101.sln等の部品ファイル というようになっています。 エラー詳細: エラー(警告)は約50出ているのですが、3種類に分かれます。 「参照コンポーネント '□□' が見つかりませんでした。」 「型または名前空間名 '○○'が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」 「型または名前空間名 '△△'は名前空間 '××'に存在しません。アセンブリ参照が不足しています。」 の3パターンです。 「参照コンポーネント '□□' が見つかりませんでした。」のパターンでは、例えばTUCONTLというコンポーネントが見つかりませんというメッセージが出ていますが、このTUCONTLという名前のフォルダが、 前述の(2)のLIBフォルダ下の階層に存在しており、その中にはTUCONTL.slnやTUCONTL.csなどが存在しています。なぜ見つからないのでしょうか? 「型または名前空間名 '○○'が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」のパターンでは、例えばAxTUtimpが見つかりませんでした...とのメッセージですが、これに似た名前のTUtimpフォルダが前述の(2)のLIBフォルダ下の階層に存在しています。 「型または名前空間名 'RTextbox'は名前空間 'TU'に存在しません。アセンブリ参照が不足しています。」のエラーが、ファイル「TU0305.cs」にて、11個出ています。 TU0305.csファイルを見てみると、やはりRTextboxという記述があり、参照が上手くいっていないようです。このRTextboxという名前のファイルが(2)のLIBフォルダ下の階層のTUCONTLフォルダ内にRTextbox.csというファイルで存在しています。 まとめますと、ビルドが出来ないエラーは、どれも参照不可からくるものと考えています。 また、参照できていないファイルは、どれも(2)のLIBフォルダ下にあるファイルであり、作業しているTU0101フォルダとは別のフォルダにあるファイルです。 エラーの根本的な原因は何でしょうか? また、例えば、それぞれの参照できていないファイルのアドレスを指定して、参照できるようにする事は可能なのでしょうか?

  • WPF C# PointToClient

    お世話になります。 宜しくお願いいたします。 以下のコードでエラーが出ます。 System.Drawing.Point p = this.PointToClient(System.Windows.Forms.Cursor.Position); エラー内容 'クラス名' に 'PointToClient' の定義が含まれておらず、型 'クラス名' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 使用中のクラスは、たしかに System.Windows.Controls.UserControl を継承しています。 さまざまな方法を試しましたが、全く理解できません。 ・解決方法または、WPFでマウス座標を取得する方法について ご教授お願いいたします。

  • C#でSystem.IO.FileFormatEx

    VB2010で System.IO.FileFormatException をThrowしているコードがあります。 これをC#2010にコンバートしたのですが 上記箇所に於いて 型または名前空間名 'FileFormatException' は名前空間 'System.IO' に存在しません。アセンブリ参照が不足しています。 というエラーが出てしまいます。 何を参照設定すればよいのでしょうか。 またはこのような処理は不可なのでしょうか。

  • C#初心者が変数の型について質問です

    使用ソフトは Microsoft Visual C#です protected Scene scene; と入力すると Scene のところで「usingディレクティブまたは名前空間が不足しています」とエラーが出ます。 多分usingって書いてあるところに名前空間?を追加すればいいと思うのですが、何を追加すればいいのかわかりません 自分でもだいぶ調べたのですが分かりませんでした どなたか教えて下さいm(__)m

  • C# 他のnamespaceにあるメソッドなどの呼び出しについて

    C#でソフトウェアを作成しています。質問は2つあります。 質問1 引き継いだプログラムに3つのnamespaceがあります。その一つだけ太文字になっています(多分、主力だから?)。太文字による影響を知りたいです。 質問2 同じnamesapace内では、他のクラスのメソッドや変数はインスタンス化を行って呼び出すことが出来ました。また太文字ではないnamespaceにあるクラスのメソッドや変数を、太文字のnamespaceにあるクラスで呼び出すことは出来ます。 しかし、太文字のnamespaceにあるクラスのメソッドや変数を、太文字ではないnamespaceにあるクラスでインスタンス化を行っても呼び出すことが出来ません。下のようなエラーが出てしまいます。どのような問題があるのでしょうか。 型または名前空間名'namespaceA'が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。

  • C#でコンパイルできない

    Visual C# 2008 EXPRESS EDITONでコンソールアプリケーションを作成しています。 プログラム上の以下の行をコンパイルできません。 System.Windows.Forms.Clipboard.SetText(string); エラーメッセージは以下のとおりです。 型または名前空間名 'Windows' は名前空間 'System' に存在しません。アセンブリ参照が不足しています。 なお、フォームアプリケーションの作成においては、上記のエラーは発生しませんでした。参照ライブラリを加える必要があるのでしょうか?

  • C#でExcelを起動したい

    http://jeanne.wankuma.com/tips/csharp/excel/execute.html を参考に C#コードに // Excel.Application の新しいインスタンスを生成する Excel.Application xlApplication = new Excel.Application(); // Excel を表示する xlApplication.Visible = true; // 1000 ミリ秒 (1秒) 待機する System.Threading.Thread.Sleep(1000); // Excel を終了する xlApplication.Quit(); // COM オブジェクトの参照カウントを解放する (正しくは COM オブジェクトの参照カウントを解放する を参照) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication); を追加したのですが エラー CS0246: 型または名前空間名 'Excel' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 が出てしまいます。 以下の様にしているのですが、何のusingを追加すればよいのでしょうか? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace testproject { public partial class testproject: Form { public testproject() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Excel.Application の新しいインスタンスを生成する Excel.Application xlApplication = new Excel.Application(); // Excel を表示する xlApplication.Visible = true; // 1000 ミリ秒 (1秒) 待機する System.Threading.Thread.Sleep(1000); // Excel を終了する xlApplication.Quit(); // COM オブジェクトの参照カウントを解放する (正しくは COM オブジェクトの参照カウントを解放する を参照) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication); ImageViewer imgViewer = new ImageViewer(); imgViewer.Show();

専門家に質問してみよう