2017-12-14 1 views
2

タイトルにはすべてが表示されます。次のような別の関数を引数として取る関数を書いています。引数を関数に渡し、デフォルトの引数を設定します。

void function(Action func) { } 

これはうまくいきます。私は、しかし、私はは、別の関数の引数として機能するように使用することができますので、パラメータなしで関数を呼び出すことができるようになります。私は、パラメータのデフォルト値はで設定することができます知っている:

void function(int x = 0) { } 

私がしようとした場合:

void function(Action func = anotherFunction) { } 

私が 『FUNC』のデフォルトパラメータ値がコンパイル時の定数でなければなりません」というエラーを取得します"デフォルト機能を設定することは可能ですか?もしそうなら、どうですか?これはクロスプラットフォームのXamarin Formsモバイルアプリケーションで使用されているため、クロスプラットフォームの機能が必要です。すべての関数はvoidを返し、1つの引数だけを取ります。引数関数は、あなたができる

答えて

3

何かが

void function(Action func = default(Action)) { } 

FUNCパラメータはオプションになりますが、それはヌルのデフォルト値を持つことになり、「送信」ユーザーがクリックした後に呼び出された関数を決定します。 funcが参照型で定数ではないため、すでに存在するデフォルトのアクションにfuncを設定することはできません。ここで

は、いくつかのmore info on the default keyword

EDIT:私はあなたがが「FUNC」が設定されていない場合は何かをする方法を望んでいた場合、それはあなたが常にコールバックを呼び出す前にやるべき(ヌルだ場合、あなたがチェックすると仮定します)、そうであれば何か他のことをしてください(あなたはそこで何をするために何のアクションかコールバックを指定することができます)。

EDIT2:mjwillsが述べたように、あなたもvoid function(Action func = null) { }

行うことができ、オプションのようにしたいパラメータが構造体であるとき、デフォルトのキーワードは、より有用であろう。

+0

デフォルト(アクション)はnullなので、メリットはありません。いずれか1つが動作します - オプションパラメータとしてActionをnullに設定できることを忘れてしまいました。 – BassaForte

1

コード内にanotherFunctionを設定することで、目標を達成することができます。例:

void function(Action func = null) { 
    if(func == null) 
     func = anotherFunction; 
} 
関連する問題