3

私はC#の例で次のコードを見てきました:

public void AddScreen(GameScreen screen, PlayerIndex? controllingPlayer)
{
    screen.ControllingPlayer = controllingPlayer;
    screen.ScreenManager = this;
    screen.IsExiting = false;
}

?そして、PlayerIndexの後に何をしているのかわかりません。これは列挙型であり、クラスでは、その?背後にあるすべての通知があります。私の質問: それは何をするもので、何と呼ばれ、なぜそれを使用するのですか?

これをグーグルで検索しましたが、このコーディングの名前がわからず、グーグルが検索クエリの疑問符を除外しているため、うまくいきませんでした

4

8 に答える 8

9

は型?を作りPlayerIndexますNULLABLE

または のような基本型であっても、そのようcontrollingPlayerにすることができます。NULLenumint

于 2013-06-05T09:14:36.953 に答える
3

null 許容型です?。これは、または値を含むことができることを意味します。controllingPlayernull

変数に関連付けられた値があるかどうかを確認するには、 を使用できますHasValue。実際の値を取得するには、次を使用しますValue

if ( controllingPlayer.HasValue )
    // now do something with controllingPlayer.Value
于 2013-06-05T09:14:46.617 に答える
3

疑問符は、PlayerIndexが型として扱われることを示しnullableます。

おそらくPlayerIndexクラスや構造体ではなく、列挙型やエイリアスintなどです。エイリアスの場合は、コードで次のようなものを見つける必要があります。

using PlayerIndex= System.Int32;
于 2013-06-05T09:14:59.983 に答える
1

の略で、値またはNullable<PlayerIndex>を渡すことができることを意味します。PlayerIndex null

于 2013-06-05T09:15:24.500 に答える
1

はnull になる可能性が?あることを示しています。controllingPlayerのように書くこともできますNullable<PlayerIndex> controllerPlayer

これは、参照型のように null にできない値型を扱う場合に便利です。通常intの がある場合、値 0 が指定された変数と書き込まれない変数を区別できません。でラップすることによりNullable<>、値があるかどうかを確認できるようになりました。

int notNullable;  //will be initialized to 0 by default.
int? nullable;    //will be initialized to null by default.

if (nullable.HasValue)        //Do something if the variable has been given a value
{

   return nullable.Value;     //get the actual int-value
}

null 許容型については、msdn のドキュメントを参照してください: http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx

于 2013-06-05T09:15:31.710 に答える
0

問題の値の型がnull 許容型であることを意味します

于 2013-06-05T09:16:04.253 に答える
0

何か?を定義するときに型に追加することは、a でラップすることの省略形ですNullable<T>(詳細については、 Nullable 型を参照してください)。これは、通常は null を表現できない値型が、常にデフォルトに頼るのではなく、非値をチェックできることを意味します (つまり、がintデフォルトではなく にデフォルト設定さ0れますnull)。

モノに値があるかどうかを確認し、次のようにして値にアクセスできます。

var hasValue = nullableThing.HasValue;

var underlyingValue = nullableThing.Value;
于 2013-06-05T09:16:04.663 に答える
0

PlayerIndex?変数が null 値になる可能性があることを示します。構文 T? System.Nullable の省略形で、T は値の型です。Nullable 型 (C# プログラミング ガイド)を参照してください。

于 2013-06-05T09:16:31.120 に答える