• ベストアンサー

C# 引数の型 自由

自由という書き方は悪いですが・・・ public void A(int a){} 上記の関数でdouble型も渡したいのですが、 できますでしょうか? 下記のようなことは望んでいません 引数は1つでよろしくお願いします。 public void A(int a, double b){}

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

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

普通、オーバーロードするでしょうね。 public void A(int a){} public void A(double a){}

suhixinkusu
質問者

お礼

これです。 ありがとうございました。

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

その他の回答 (2)

回答No.2

object型で受けて、is演算子でデータ型を判定する方法があります。 public string hogehoge(object obj) { if (obj == null) return ""; if (obj is int) { objがint型の場合の処理 } if (obj is long) { objがlong型の場合の処理 } if (obj is float) { objがfloat型の場合の処理 } if (obj is double) { objがdouble型の場合の処理 } }

suhixinkusu
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

最初から double にしとけばいいんじゃない?

suhixinkusu
質問者

お礼

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

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

関連するQ&A

  • C++/Cこういうことは可能でしょうか?違う型の引数をとって同じようなことをする

    お世話になります。 C++の初心者です。 違う引数をとって同じ関数にいれて同じようなことをさせるというのは できるのでしょうか? コンストラクタの作成方法で可能?? 共用体で可能?? 例: 型の違う構造体A,Bがある。 構造体のメンバには同じstatusが存在する。 statusが1のときだけresultを+し値を返す。 typedef struct{   int status;   int b; } DATA_A; typedef struct{   int status;   int b;   int c; } DATA_B; int test(DATA_AかDATA_Bを引数でとる,int data_num){ //data_numはデータ数  int i=0;  int counter=0;  for(i=0;i<data_num;i++){   //DATA_AまたはDATA_Bのメンバstatusが1ならcounterを+する   if(DATA_A.status == 1){    counter++;   }  }  return counter; } 以上のような感じです。 引数の型が違う2つの関数を作ればできますが、 同じことをさせるので同じ関数で実現できないかなと思って 質問させてもらいました。 よろしくおねがいします。

  • C++関数の仮引数について

    関数の引数に配列を指定したいのですが たとえば、 double* point[4]; void setPoint(double _point[]) { for(int i = 0; i < 4; i++){ point[i] = (_point + i); } } int main(void) { setPoint((double[])(1.0, 2.0, 3.0, 4.0)); } '型キャスト' : 'double' から 'double []' に変換できません。 とエラーが出てしまいます。 どのようにすればよいでしょうか?

  • 関数の引数と実引数の取り扱いについて

    C言語初心者です. 関数の引数と実引数の取り扱いについて,教えていただきたいことがあります. 例えば,2変数の和を求める関数を考えると,以下のようになると思います. #include <stdio.h> double sum(double x, double y); int main(void) { double a, b, wa; a=2.0; b=3.0; wa=sum(a,b); return 0; } double sum(double x, double y) { double total; total=x+y; return total; } このとき,mainプログラムでは,a,bふたつの変数を定義しておいて,関数sumに入れて計算させているわけですが,mainプログラムで変数x,yを定義しておいて,以下のようなプログラムにするのはありでしょうか? 参考書などをみると,前者のように取り扱っているようなのですが,試しに後者で実行させてみても同じ結果となりました. #include <stdio.h> double sum(double x, double y); int main(void) { double a, b, wa; a=2.0; b=3.0; wa=sum(a,b); return 0; } double sum(double x, double y) { double total; total=x+y; return total; }

  • 引数に二重配列のある関数について

    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]); } 引数に多重配列を使った場合の関数の作り方について教えてください. お願いいたします.

  • デフォルト引数の意味が解りません

    //正しい void func1(int a, int b, int c, int d=2, int e=10) 右から順にデフォルト引数を設定することができます。 //誤り void func2(int a, int b =2, int c, int d, int e=10) このようなデフォルト引数の指定はできません。 このfunc1()関数は次のように呼び出すことができます。 (1)func1(10, 5, 20); (2)func1(10, 5, 20, 30); (3)func1(10, 5, 20, 30, 50); (1)は、デフォルト引数を指定した二つの引数を省略して呼び出しています。つまり引数dは2、 eは、10で初期化されます。 (2)には、最後の引数を省略して呼び出しています。つまり、最後の引数eが10で初期化されます (3)は、すべての引数を指定して呼び出しています。 とあるのですが、まったく意味が解りません。 どうかこの問題を解る方解りやすく説明お願いします。  

  • ポインタ引数をさらにポインタ引数に渡す方法

    ポインタ引数をさらに関数のポインタ引数として設定するには、 どうしたらよいのでしょうか? イメージとしては、 int 関数A(*a *b) { *a = 5; *b =3; 関数B(*a *b) } またポインタ引数の関数内で、 ポインタ指定せずに変数を使えるのでしょうか? int 関数A(*a *b) { a = 5; b =3; 関数B(*a *b) }

  • 関数の引数の型と引数名を取得する方法

    こんにちは。 コンパイル時に関数の引数の型と引数名を取得する手段はありますでしょうか? 関数名は__FUNCTION__がありますが、引数をなんらかの方法で取得したいのですが手段はありますでしょうか? foo(int a0, int a1 ) なら"int a0, int a1"みたいな感じで取得できればと思っています。

  • 引数宣言の意味

    C++における引数宣言に関する質問です. サブルーチンに関して以下のように記述がありました. void Exam(int i,int j,double a[][NN],double &b) { b = ・・・ ; } このとき,bの宣言に&が付いていたのですが,これは どういう意味があるのでしょうか? C++の経験がないもので,よくわかりません. 基本的なことかもしれませんが,よろしくお願いいたします.

  • C言語(引数)

    はじめまして。 C言語を習い始めたものです。 関数を定義するとき、よく耳にする、仮引数や実引数があると思います。 仮引数は関数の定義内で値をうけとる変数のことであり 実引数は関数を呼び出す際に渡す値を実引数というらしいのですが どこからどこまでを仮引数と呼ぶのかわかりません。 例えば、 fの関数の定義内で ↓があるとします。 (関数にする意味はないのですが、確認のためあしからず・・・) double f(double x) {     x=5;     return(x); } この場合、仮引数とよばれるものは double f(double x)の xが仮引数であって x=5;のxは仮引数と呼ばないのでしょうか?? もしそうならば void f(double x) { printf("%f",x); } のprintf("%f",x);内のxは仮引数とよぶのでしょうか? 質問の内容が意味不明かもしれませんが よろしくお願いします。

  • 関数を引数とする方法?

    いつもお世話になっています。 MFCでプログラムをしています。 今、任意の関数(Func1)を 積分する関数(Func2)を作っています。 現在は、被積分関数の数だけ、 積分関数(Func2)を書いているのですが、 非効率的なので、なるべく汎用性を持たせたいと 考えています。 参考書(新C言語入門シニア編)の該当個所で、 クラスでない通常の関数を引数とする場合は、 うまくいったのですが、 クラスのメンバ関数を引数とした場合、 どうしてもコンパイルエラーが 発生してしまいます。 関数Func、I及びエラーメッセージは大凡次のとおりです。今のところ、引数とする関数(Func1)の引数は、 同一個数としています。 <被積分関数の例> double ClassA::Func1 (double a){ return a * 10; } <積分関数> double ClassA::Func2 (double (*f)(double), double a, double b){ return b * f(a); } void classA::Integration() { ... Func2(Func1,a,b); ... } <エラーメッセージ> classA::Integrationの呼び出し箇所で、 「1番目の引数を double(double)からdouble(__cdecl)(double)に 変換できません」 と出ます。 double(double)の部分は合っているようなのですが、 (__cdecl)の部分が違うということまでは 分かりました。 メンバ関数であることが原因のようなので、 Func2での引数宣言を double ClassA::Func2 (double (ClassA::*f)(double), double a, double b){ return b * f(a); } に変えてみたところ、 引数受け渡しのところはクリアするのですが、 Func2(Func1,a,b); の呼び出し時に、Func2が関数ではないという エラーがでます。 アドバイス又は参考URL等を 教えていただければ助かります。 よろしくお願いします。