• ベストアンサー

C# メソッドが実行されているか調べる

public void A() {   //※ } public void B() {   D();   //略 } public void C() {   D();   //略 } public void D() {   A();   //略 } ※の場所でBが実行されているか分かりますか? 引数とかは無しでお願いします。 そんなことできないのでしょうか?

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

  • ベストアンサー
  • cma3atgoo
  • ベストアンサー率35% (32/90)
回答No.1

void a() { System.Diagnostics.StackTrace z = new System.Diagnostics.StackTrace(); System.Diagnostics.Debug.Print(z.ToString()); } void b() {d();} void c() {d();} void d() {a();} a()までのメソッド呼び出しを確認できる

suhixinkusu
質問者

お礼

B()が実行されたかは文字列で検索しないと いけなさそうですね。 ピンポイントで分かれば良かったのですが・・・。 回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

同一クラス内なら、D()を呼ぶ直前で、インスタンス変数に、どこから呼び出されたかの Enumでも保持させとけばいいんじゃないですか? 正直、意味があるかどうかは甚だ疑問です。 StackTraceでも取れますが、Releaseビルドした時にデバッグシンボルがないのでダメだった気がします。 http://pgnote.net/?p=5

suhixinkusu
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C# こういう場合ってどうなるの?

    public void A(bool b) {   if(b ? B() : C())//分かると思いますが、三項演算子   {     //略   } } public bool B() {   return true; } public bool C() {   return false } 上記のAにtrueを渡し実行した場合、 if文の中はどうなるのでしょうか? 引数がtrueならBを実行し、Bの戻り値trueが if文で処理され、if内に入る・・・でよろしいのでしょうか? それとも引数bの評価がそのままifで使われるのでしょうか? 例えばのコードなので、bだろうがBだろうが変わらない・・・みたいな 回答はご遠慮ください。

  • メソッドのオーバーライド(java)

    class A3{ void hello(){ System.out.println("A3"); } void hello(int i){ System.out.println("A3"+i); } } class B3 extends A3{ void hello(){ System.out.println("B3"); } } class C3 extends B3{ void hello(String s){ System.out.println("C3"+s); } } class MethodOverriding3{ public static void main(String args[]){ A3 obj = new C3(); obj.hello(); } } 上のプログラムを実行すると"B3"と表示されまが、どうしてクラスBのメソッドが実行されるのでしょうか? クラスAのメソッドが無視される仕組みがわかりません。 また、クラスMethodOverriding3でobj.hello("abc")としてコンパイルすると mo.java:25: シンボルを見つけられません。 シンボル: メソッド hello(java.lang.String) 場所 : A3 の クラス obj.hello("abc");   ^ エラー 1 個 とエラーが出ます。 どうしてでしょうか? 誰か教えてください、お願いします。

    • ベストアンサー
    • Java
  • 引数に二重配列のある関数について

    void calc(int *a,int b,int c){ a[0]=b+c; a[1]=b-c; } void main(void){ int x[2]; int y=2,z=5; calc(x,y,z); printf("x[0]=%d,x[1]=%d\n",x[0],x[1]); } 上のように引数が普通の配列の関数ならできるのですが, 引数が下のような多重配列になるとエラーが出てしまいできません。 void keisan(int **a,int b,int c){ a[0][0]=b+c; a[0][1]=b-c; a[1][0]=b*c; a[1][1]=b/c; } void main(void){ int x[2][2]; keisan(x,6,2); printf("x[0][0]=%d,x[0][1]=%d\n",x[0][0],x[0][1]); printf("x[1][0]=%d,x[1][1]=%d\n",x[1][0],x[1][1]); } 引数に多重配列を使った場合の関数の作り方について教えてください. お願いいたします.

  • Javaでメソッドの引数にメソッド

    以下のようにメソッドの引数にメソッドを渡したいです。 static void methodA(methodB, str) { methodB(str); } static void methodB(str) { System.out.println(str); } つまりメソッドAにメソッド名「methodB」と文字列「str」を渡して、間接的にメソッドBを実行させたいということです。 getMethodやinvokeを使うのかなとは思ったのですが、よく理解できませんでした。 上記のようなことは可能でしょうか?

    • ベストアンサー
    • Java
  • C言語の演算について

    次のプログラムを実行したらどう出力されますか。 微妙な代入演算の違いが分からないので、教えていただけないでしょうか。 #include<stdio.h> void main (void) { int x = 5; int y = 8; int z = 3; int a,b,c,d,e,f; a = y == x + z; b = !x; c = x + y / z; d = x *=z - 1; e = --y / --z; f = y+++ % x++; printf("%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f); } できれば途中のトレースも書いていただけると助かります。 よろしくお願いします。

  • シェルからCで作った実行ファイルを動かすには?

    当方、完全に初心者です。 bashのファイルからC言語の実行ファイルを動かすことは可能でしょうか? いくつかのCの実行ファイルを、引数を指定して実行させたのですが、 どのようにすれば一番効果的でしょうか。引数を変えて何度も実行させたいので、スクリプトを書くと便利かなと考えたのですが。 どのように書けばいいのかがわかりません。 どうぞご教授ください。よろしくお願いします。

  • C言語の簡単な質問です。

    #include "stdio.h" int tasizan(int a,int b){ int c; c=a+b; return c; } int main(void){ int a,b,c; a=1; b=1; c=tasizan(a,b); printf("%d+%d=%d",a,b,c); return 0; } と、あるとします。この文を読み込む順番を教えてください。  文の左に行番号みたいに順番を書き込んでください。   例 (例が間違ってたらすみません) 1 #include "stdio.h" 2 int main(void){ 3 int a,b,c; 4 a=1; 5 b=2; 6 c=a+b; 7 printf("%d+%d=%d",a,b,c); 8 return 0; }

  • arraycopyメソッド

    ある問題集なのですが・ String a = "String"; String b = "copy"; System.arraycopy(a,0,b,4,6); でaとbがどうなるかというのですが、 プログラムが実行できません。 コンパイルは出来るのですが、 ArrayStoreExceptionの例外が出ます。 型違い、ということなんですけれど・・・ リファレンスを見ると >以下のどれかの場合は、ArrayStoreException をスローし、転送先を修正しません。 >引数 src が、配列でないオブジェクトである >引数 dest が、配列でないオブジェクトである とあります。 aとbがStringだから悪いのでしょうか?? 問題自体が間違っているのでしょうか??? どうやったら実行できるようになりますか??? ちなみに答えは a="String" b="copyString" だそうです。

    • ベストアンサー
    • Java
  • メソッド定義の際の引数で

    楽しいRuby第4版のp.120で def a(a, b: 0, c:0)  [a, b, c] end のように、必須の引数とキーワード引数を混在 させることができると説明があったので試しに def meth(a, b: 2, c: 3, *args)  [a, b, c, args] end p meth(1,2,3) のように、必須の引数とキーワード引数と不定の 引数を混在させたところエラーが返りました。 やはり、不定の引数*argsまで混在させられないの でしょうか? irbで試すとメソッド定義をendで括った瞬間に エラーが返りましたんで、きっとこれが原因だと 思うのですが。

    • ベストアンサー
    • Ruby
  • PowerShell1.0での外部プログラム実行方法

    すいません、初歩的な質問で恐縮です。 以下のようなコマンドを実行したいのですが Powershell1.0の場合どのようにしたらよい のでしょうか? C:\hoge.exe -A100 -B200 -C300 -D400 D:\hoge.raw コマンドプロンプトですと普通に実行可能なのですが Powershellで上のをタイプしても The raw file is being acquired - .4 と表示されるだけで、C:\hoge.exeが実行できてない みたいです。また、 C:\hoge.exe D:\hoge.raw の場合はPowershellでも実行できるのですが、 C:\hoge.exeの引数である-A100とかをつけると ダメみたいです。よろしくお願いします。