2017-09-21 2 views
0

私はこれをしようとしていますが、それは私とエラーを与える:パラメータの値がnullの場合、データを取得するためのショートカットは何ですか?

App.availableCards = App.availableCards ?? App.DB.GetAllPhrasesCount(); 

両方App.availableCardsとApp.DB.GetAllPhrasesCount(からの復帰は)int型です。

私が行う必要があるのは、App.availableカードがnullで、これがApp.DB.GetAllPhrasesCount()の値に設定されている場合、その値を設定することです。

'int'と 'int'型の演算子には適用できません

私が間違っていることをアドバイスできますか?ここで

+0

関連するデータタイプを表示する必要があります。これらのうちどれがnullになる可能性がありますか?エラーメッセージは、型がNULL可能ではないことを示しています。 App.availableCardsがintの場合、nullにすることはできません。 App.DB.GetAllPhrasesCount()がintを返す場合、nullにすることはできません。 (これは0でもかまいませんが、これはnullとはまったく異なります) – nos

+0

'null'と' 0'には違いがあります。 'int'は' null'にはできませんが、 '0'の値を持つことができます。 – Rafalon

答えて

2

、これを試してみてください。

App.availableCards = App.availableCards == 0 ? App.DB.GetAllPhrasesCount() : App.availableCards ; 

intは、参照型ではないため、NULL可能ではありません。

+0

うわー!最初にこのラインコードで答えるが、その中に ':'がないと – Rafalon

+0

ハハの良い点が修正されている。 – Ric

+0

誰もが欠けています:また:-) – Alan2

1

あなたはnullで合体演算子を使用するには、この

App.availableCards =App.availableCards == 0 ? App.DB.GetAllPhrasesCount() : App.availableCards ; 
+1

うわー! 2番目の答えはまったく同じ行のコードであり、まだ ':'はそれに含まれていません – Rafalon

1

App.availableCardsニーズNULL可能int型(int型?)なるようにする必要があります。

intを使用している場合は、このようなものを使用する必要があります。詳細については

App.availableCards = App.availableCards == 0 ? App.DB.GetAllPhrasesCount() : App.availableCards; 

、intはNULL可能ではないので、ここで?? Operator (C# Reference)

+2

うわー!第3の答えはまったく同じ行のコードであり、あなたにはすべて ':'がありません – Rafalon

0

を参照してください。

 //This failes 
     int x; 
     x = x ?? 10; 

     // this works 
     int? Y = null; 
     Y = Y ?? 10; 
関連する問題