• ベストアンサー

C#にて別クラスの関数を使いたい

C#にて、別クラスの関数を使用する方法を教えてほしいです。 下記のような、構造体を受け取るメソッドを作りました。 ***************************** private struct MyPoint { public int x; public int y; } private void proc1(MyPoint pt) { MessageBox.Show("座標:" ; pt.x + "," + pt.y + "実行結果"); } private void button1_Click(object sender ,System.EventArgs e) { MyPoint pt; pt.x = 10; pt.y = 20; proc(pt); } ***************************** 別のフォームのクラスから、proc1を呼び出したいのですが、やり方がわかりません。 どうか、教えてください。

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

  • ベストアンサー
  • frogeye
  • ベストアンサー率47% (11/23)
回答No.3

同じ定義をしたとしても別の名前空間に書いた構造体は同一とはみなされません。 呼び出し先クラスでの構造体を private では無く、public で宣言して下さい。 呼び出し元では、 MyClass.MyPoint pt; のようにして実体を作ります。

pyontanrie
質問者

お礼

ありがとうございました。できました!

その他の回答 (2)

  • talepanda
  • ベストアンサー率58% (45/77)
回答No.2

proc1の定義と呼び出しで、引数の型が合わないということです。 定義ではMyClass.MyPoint、呼び出しではForm2.MyPoint2になっていますよね。

pyontanrie
質問者

お礼

修正しましたが、それでも、うまくいきませんでした。上記の方の回答を参考にして、できました。どうもありがとうございました。

  • talepanda
  • ベストアンサー率58% (45/77)
回答No.1

>private void proc1(MyPoint pt) public void proc1(MyPoint pt) この関数のクラスがMyClassだとすれば、 MyClass mc=new MyClass(); mc.proc1(...);

pyontanrie
質問者

補足

早速のご回答、ありがとうございます。しかし、エラーがでました。 呼び出し側を以下のようにコーディングしたのですが、 public partial class Form2 : Form { public Form2() { InitializeComponent(); } public struct MyPoint2 { public int x; public int y; } private void button1_Click(object sender, EventArgs e) { MyPoint2 pt2; pt2.x = 30; pt2.y = 40; MyClass frm1 = new MyClass(); frm1.proc1(pt2); } } 'WindowsApplication1test.MyClass.proc1(WindowsApplication1test.MyClass.MyPoint)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 'WindowsApplication1test.Form2.MyPoint2' から 'WindowsApplication1test.MyClass.MyPoint' に変換できません。 と2つのエラーが出ます。すみません、教えてください。

関連するQ&A