• 締切済み

c#でVBのcall的役割を果たすコードをおしえてください

VBでは、一つの動作を Sub 動作1()   内容 End Sub Private Sub()   call 動作1 End Sub のように重複コードを避ける方法がありますよね。callで いつでも呼び出せるわけですが、これをc#で記述すると どのような方法があるのでしょうか?

みんなの回答

回答No.1

普通にメソッド名とその引数、戻り値を指定すれば良いだけだと思うのですが・・・。

ganmo0122
質問者

お礼

有り難うございます^^

関連するQ&A

  • VB6のコードをC#にしたい

    C#はこちらでよかったでしょうか。。カテゴリ違いだったらすみません。 現在、VB6にて書かれているコードを、C#にて置き換える事になりました。 しかし私はまともなオブジェクト指向の言語で組むのも初めてなら、C系の言語で組むのも初めてで、そこでどうすればいいのか困っています。 VB6で sub aa(i as integer)      dim obj as object   call bb(obj,i)   call obj.run()    end sub    sub bb(byref pobj as object,i as integer)      select case i    case 1:     pobj = new obj1    case 2:     pobj = new obj2   end select    end sub    といったようなコードがあります。obj1とobj2はVBのクラスなのですが、メソッドはどちらも同じrunというものが用意されているとします。 ようは引数の値によって、メソッドやプロパティの形は同じだけれど、メソッドの中身が違うクラスをもらって、そのもらったクラスのメソッドを実行したいわけです。 しかしC#でまったく等価のソースをかくと、当然ながらobjはただのobject形なので、そんなメソッドはないとおこられてしまいます。VB6の場合、そのあたりが厳密でないので許されていたのですが。。。 こういった場合、どのようにソースをかけばいいのでしょうか? やはりobj1,obj2のクラスの方に工夫しないといけないでしょうか? 実はこのオブジェクトを用意しているのが別チームの為、その場合こうしてくれと提案しなくてはなりません。もしそれがなくても可能であればそれにこした事はないのですが。。。 いちおうもらったクラスのタイプをしらべて、それごとにコードをかくという方法は思いついたのですが、それだとobj1、obj2にあたるクラス数が実は種類がたくさんあり、そこだけならまだしも、他にも同じようなコードをたくさんかかなくてはいけなくなってしまいます。 もう少しスマートにするにはどのようにすればいいでしょうか? こういうクラス構成にすれば、とか教えていただければ助かります。

  • VBの記述。サブや関数のコードを束ねる

    VBの記述でsubやfunctionの上の単位でまとめる記述があったように思えますが、久々で思い出せません。 クラスの構成だとかではなくコメントレベルの操作です。 □フォームの操作関係  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load   ' code  End Sub  Private Sub Form1_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed   ' code  End Sub □ボタンの操作関係  Private Sub Button_Close_Click(sender As Object, e As EventArgs) Handles Button_Close.Click   Me.Close()  End Sub  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click   ' code  End Sub サブの頭のところクリックしたら、コードが見えたり隠れたりするように、 記述ブロックの頭のところをクリックすると、記述ブロック全体のコードが見えたり隠れたりしたような。。。 なんというヤツでしたっけ?

  • コードの違いについて(VB2008)

    お世話になっております。 最近、VB2008ExpressEditionの勉強を始めたのですが、まだ下記の違いが理解できていません。 (1) private sub hoge1()  DataGridView1(0,0).Value = "TEST" end sub (2) private sub hoge2()  dim dgv as DataGridView = DataGridView1  dgv(0,0).Value = "TEST" end sub (1)と(2)は同じ結果になりますが、ネットで色々なサンプルを見ると、(2)の書き方が多はなぜなのでしょうか。 同じ結果が得られるなら(1)の方が行数が少なくて良さそうに思えるのですが、(2)にする理由が分からないのです。 お恥ずかしい内容ですが、きちんと理解したいので、わかりやすい説明をいただけると大変ありがたいです。 よろしくお願いいたします。

  • VB2010 フォームのリロード

    今までVB6.0でプログラミングをしていた者で、最近VB2010に開発環境を変えました。さっそくソフトを開発しているのですが、フォームのリロードが必要なところがあったためそこのプログラムをネットなどで参考にして書いてみたのですがどうしてもエラーがでます。 今までVB6.0ではその部分を Private Sub Command1_Click() Set Form1 = Nothing Call Unload(Me) Form1.Show End Sub と、記載していました。これをVB2010のコードに書き換えるとどのようになるのでしょうか。 ご回答よろしくお願いいたします。

  • VB初心者です。コードの書き方が分かりません。

    VB初心者です。 VBで(zのn乗)-(xのn乗+yのn乗)の計算が出来るようにしたいのですが、答えが必ず-1になってしまいます。 Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) End Sub End Class 正しいコードの書き方を教えて下さい。 また特定の答えのときにメッセージを表示したいのですが、どうすればいいですか?

  • VBとVBAのコードの違い プロシージャー呼び出し方法

    何度かお世話になっておりおります 毎回アドバイスありがとうございます 早速なのですがまた躓いてしまいアドバイスお願いします。 ~質問内容~ 標準モジュールからフォームのプロシージャーを呼び出す エラー内容 オブジェクトが必要である       オブジェクト修飾が必要など 出てきました オブジェクト修飾 というのが もう理解出来ず 本当にスタートの時点ではありますが アドバイスお願いします VBのコード 標準モジュール Sub Main() MainForm.Initialize End Sub フォームのコード Public Sub initialize()  ”コード内容”  End Sub ↑上記で記入しました フォームで宣言されているInitialize を呼び出したいのですが VBでは このままで出来るはずなのですが VBAでは オブジェクト修飾が必要です CALL をつけても エラーのままでした 少し質問がわかりにくくなってしまいましたが 標準モジュールから フォームのプロシージャーを呼び出すには なんと入れれば宜しいでしょうか? アドバイスお願いします

  • VBとC#

    よくある質問とは思いますが、VBとC#は何が違うんでしょうか? コードの記述法が少し違うだけで、できる事は同じのように思えます。 それでもマイクロソフトがVBとC#を分けてリリースするということは、何か理由があるのでは…。 「コレを作るならVBよりC#を使ったほうががいい!」というようなものはあるのでしょうか?

  • VB6.0(SP6)からActiveXDLLをコールする方法

    コマンドボタンを押すと DLL内のgReadItemがコールされる様に作成したのですが 実行すると 「実行時エラー453  エントリgReadItemがDLLファイルmenu.dll内に見つかりません。」 というエラーが発生します。 VB側の宣言は下記の方法で間違いないでしょうか? プロジェクトの参照設定でmenu.dllの設定も行っています。 回答宜しくお願いします。 <標準モジュールでの宣言> Public Declare Sub gReadItem Lib "menu.dll" () <フォームでのコマンド押下処理> Private Sub cmd1_Click() Call gReadItem End Sub

  • VB6.0 KeyDownイベントの対応

    VB6.0を使ってプログラム中ですが、下記の  Command10_KeyDown で、複合キー「 Ctrl + ↓」 だとイベント KeyDown を受信できるのですが、単純な キー「↓」だと、イベント KeyDown を受信でず、他のボタンにフォーカスが移ってしまいます。 Comman10_GotFocus に何か対応策を入れて、単純な キー「↓」のイベント KeyDown を受信する方法はないでしょうか? Private Sub Command10_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 40 Then execsub001() End If End Sub Private Sub Commnad10_Click() execsub001() End Sub Private Sub Comman10_GotFocus() 上記問題への対応策を此処に記述したい End If Private Sub execsub110() 内容は省略 End Sub

  • VB2005ExpressEditionでのUnlha32.dllのエラーコードの出し方

    現在VB2005ExpressEditionでUnlha32.dllを使ってファイルの解凍をしようとしています しかし、失敗するのでエラーコードを出させるようにしてみました でも、出てきたのはどうやらエラーコードとは違うもののようなのです Unlha32.dllのエラーコードの出し方が間違っているようなのでエラーコードの出し方を教えてください ソースです↓(半角スペースは全角スペースにしてあります) Public Class Form1   Private Declare Function Unlha Lib "Unlha32.dll" (ByVal CmdLine As String) As Long   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     MsgBox(Unlha("e C:\test.lzh -x1a1 -c C:\ *.*"))   End Sub End Class