• ベストアンサー

VB.NETのモジュールで定義した関数のように、どこからでも呼び出せる 関数は、C#でどのように記述するのでしょうか?

C#2005で、どこからでも呼べる関数ができないか悩んでいます。 昔、関数のプログラムを作っていた頃から、進歩せず オブジェクト思考的なプログラミングが苦手で、 エラー 名前 '***関数名***' は現在のコンテキスト内に存在しません。 というエラーがたくさん出て、苦しんでおります。 VB.NETのモジュールで定義した関数のように、どこからでも呼び出せる 関数は、C#でどのように記述するのでしょうか? クラスが基本という方針はわかりますが、まず手がかりが欲しいです。

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

  • ベストアンサー
回答No.1

[@IT]VB.NETのモジュールの正体は? http://www.atmarkit.co.jp/fdotnet/dotnettips/248module/module.html

関連するQ&A

  • クラスの関数へユーザー定義型の引数を渡す(VB6.0)

    お世話になります。 クラスモジュール内へ宣言した関数へユーザー定義型(標準モジュール内でPublicで宣言)の引数を渡すとコンパイルエラーとなってしまいます。 ユーザー定義型を宣言した以外の標準モジュールでは同じ関数は動きますが、Formモジュールでは動きません。 標準モジュールにしかユーザー定義型の引数を渡すことは出来ないのでしょうか??

  • 定義済み関数を用途別に逆引きしたい

    ボクはプログラミングに関してほぼ初心者で、 プログラミングの基礎はC言語だと聞いたので、C言語の入門本に取り掛かり変数や構造体や関数などの概念を学んだ上で、既存のウィンドウズ付属の定義済み関数を組み合わせてプログラミングしてみようと思ったのですが、一つの疑問が浮かび上がりました。 「定義済み関数を使うには、その関数を知っていることが前提条件なのか?それらは用途や目的など何らかの形で分類されていなくて、ただ漠然と並べられているのか?ボクはいくつ関数を覚えればいいんだ…?orz」という疑問です。 質問する前にボクなりに調べましたが、もしかしてこの「関数を用途や目的等別で分類する」とはオブジェクト指向の「クラス」にあたるのでしょうか?だとすれば、次にボクはオブジェクト指向のプログラミングを学ぶべきでしょうか?

  • VB.NETでテンプレート関数・クラス

    VB.NET(.NET2.0ベース)でテンプレートを用いてクラスや関数を定義したいのですが、方法が分かりません。検索してもC#やC++ばかり出てきます。 C#が出てくるのだから、VBでも…と思いましたが、CILに展開される際、型毎に多重宣言でもしているんでしょうか? とりあえず、VB.NETでテンプレートの使い方をご教示頂ければ幸いです。

  • ACCESS モジュールで自作した関数が、未定義関数・・・?

    モジュールで自作した関数を使用する際、普段は問題なく使用できるのですが、何かの拍子に「未定義関数です」という内容のエラーが発生します。 こうなると、この関数は使えなくなります。 この関数のコードを変更しなくても、このエラーは発生します。 ACCESSそのものを再起動すると問題なく使用できます。 なぜこのようなことがおきるのでしょうか? 解決方法はありますか? よろしくおねがいします。

  • VBのBooleanはCではどんな方でしょうか? DLL

    元々、VB6のソースをCに書き直している最中ですが、 VBでintegerは Cではshortでよいのですが、VBでBooleanはCではどのように記述したらよいのでしょうか? 確かCは真が-1で偽が0だったと思いますが、それならば shortで定義して・・・ でうまくいくのでしょうか? VBから呼び出すCの関数のDLLを書いた事のある方、教えていただけますか? また、今の時代、DLLは古いでしょうか? だいぶ前のソースをいじくっております。

  • なぜ、VBよりC#を勧めるのですか?

    プログラミング初心者やBASIC経験者に対して、C#を勧める人が結構いるみたいです。 C#よりVB2005を勧めるといった人はほとんど見かけません。 BASIC系の言語を知っていればVBScriptやVBAなどの理解も早いと思いますし、VB.NET(2005含む)の方が参考書や参考Webページが多いように思われます(初心者向けの物は特に多いのでは…) VB6の頃はオブジェクト指向の機能が不完全でしたが、VB.NETになってからは、完全なオブジェクト指向言語となったように聞いていますが… C#の方が洗練されているとか美しいとかいった事を聞きますが、その程度の事は所詮好みの問題ではないでしょうか 生産性や開発コスト、プログラムの管理といった具体的な観点でC#を勧める理由が知りたいです。

  • モジュール内の静的関数からフォームの名前を取得することは可能でしょうか?

    VB2008で、ListBox上にプログラムに含まれるフォームの名前の一覧を表示させたいのですが、モジュールに静的関数で呼び出す作りで(クラス内だとMeが使えますが、モジュールだとMeが使えないので難しいかな?) お願いします。

  • 構造体に関するエラーについて(VB6.0→VB.NET)

    私はプログラミング初心者なのですが、 モジュールAにて Type test A_test() As String End Type Global AAA As test 他の複数のモジュールにて For i = 1 To 10 AAA.Atest(i) = "123"   ←(A) Next i VB6.0では上記のようなプログラムが問題無く動作するのですが、VB.net(2003)にてアップグレードし、実行すると他のモジュールの(A)のところにて"オブジェクト参照がオブジェクト インスタンスに設定されていません。"といったエラーが発生してしまいます。"AAA.A_test(i)"の値"Nothing"になっており、それが問題だと思うのですが対処法が分かりません。ご存知の方がおられましたら御教授宜しく御願いします。

  • 関数内のクラス定義について

    function func_name() { --- snip --- class class_name { --- snip --- } --- snip --- } のように関数内でクラスを定義した例を見たのですが、関数外でクラスを定義した場合とどこが違うのでしょうか? またどのような意味があるのでしょうか? PHPでは関数内に子関数を定義すると子関数もグローバルになって二重定義エラーになるためこのようなことは出来ないと認識しているのですが、関数内でのクラス定義でこのようなことは起こりませんか。 またclass class_nameはグローバルなスコープを持たないのでしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • VC++のDLLをVB6.0からVB.NETへ移行する方法

    はじめて投稿します。 今、現状VB6.0のプログラムで使用しているVC++のDLLを VB.NETで使用できるように、VB.NETのソースの改修をしています。 (開発環境は、VisualStudio.NET 2003) たいていのDLLは、DllImportを行うことで VB.NETから使用できることを確認しました。 /*--(例)------------------------------------------*/ Imports System.Runtime.InteropServices <DllImport("DLLTest.dll")> _ Private Shared Function DLLTestMethod() As Integer End Function /*------------------------------------------------*/ しかし、苦戦しているDLLファイルがあって、 そのソースを見ると、COMで実装されているようで、 コンパイルしたらタイプライブラリファイルが作成されています。 またDLLのレジストリも登録されているようです。 VB6.0でどう使われているか確認したところ、 そのDLLの参照設定をしていて、 "Public obj As New クラス名"でクラス宣言した後、 obj.関数名()で処理を行っています。 VB.NETでいろいろ試行錯誤してみましたが 参照設定はできるものの、その後で手詰まりになっています。 (参照設定しても、灰色になっているクラス名が存在するので 正しく設定できているかも怪しい状態) (1)----------------------------------------------- 参照設定後、オブジェクトブラウザから見えるクラスをNewして そのメンバ関数を使用する方法 -------------------------------------------------- (結果) レジストリ登録をしていないと 「CLSID{・・・}のCOMオブジェクトが有効でない」云々というエラーに。 それを受けて手動で該当するDLLのレジストリ登録を行った後だと 「オブジェクト参照がオブジェクトインスタンスに設定されません」というエラー。 (ということは、クラス生成に失敗している?) (2)----------------------------------------------- 上記のようにDllImportで実装する方法 (ちなみにそのDLLがエクスポートしている関数は DllCanUnloadNow, DllGetClassObject, DllRegisterServer, DllUnregisterServerの4つ) -------------------------------------------------- (結果) DllGetClassObject以外については関数を呼ぶことができている。 DllGetClassObjectは、引数設定に苦戦して今のところうまくいっていない状態。 (3)----------------------------------------------- インスタンス生成ができていないようなので どこかで調べて見つけてきたCoCreateInstance関数を使用する方法 -------------------------------------------------- (結果) これも引数に何を渡してよいかわからず試行錯誤中。 DLLの読み込みの時点でこけているかと予測して そのあたりが解決すればよいのかな・・・といろいろ試していますが WindowsプログラミングやCOMがよくわかっていないので 何が正解で何が間違っているのかさっぱりわからず、 周りに聞いても精通している人がいないためどうしようもなくなっています。 どんな些細な手がかりでもよいので 突破口になりそうなアドバイスがあれば教えてください。 よろしくお願いします。

専門家に質問してみよう