として表示されます。ほとんどの場合、これは正常に動作し、特定のサーバーでは「1(s)」と表示されます。列挙ToStringメソッドは、私が列挙</p> <pre><code>private enum TimeUnit { Day, Month, Year } </code></pre> <p>を持っていると私は説明を移入しています数
これはどうしてですか?
として表示されます。ほとんどの場合、これは正常に動作し、特定のサーバーでは「1(s)」と表示されます。列挙ToStringメソッドは、私が列挙</p> <pre><code>private enum TimeUnit { Day, Month, Year } </code></pre> <p>を持っていると私は説明を移入しています数
これはどうしてですか?
を使用してみてください、それはまたsaferであるという利点を持っていますそれが必要なので:
'enum'sをnullにすることはできません。その多くは統合失調症の安全です。 –
フェアポイント、私はちょうどコピーして貼り付けた。今編集中。 – happygilmore
私はこの修正を提出しました - 明らかに、正しいかどうかを知る前に、サーバーへの配備を待つ必要があります。 – Liath
Enum
は文字列でoptionnalyexpressedデジタル列挙ですので(その別名を検討)
はい、これは2つの異なるボックスが異なる方法でToString操作を実行する理由を説明していません。 – Liath
あなたはToString
を使用して、適切にフォーマットする必要があります。
return string.Concat(unit.ToString("F"), "(s)");
MSDN氏は述べています:一般的なフォーマット文字、 "G" は、指定された であるかのように
このメソッドは動作します。つまり、この 列挙型にFlagsAttributeが適用されておらず、このインスタンス の値に等しい名前付き定数がある場合、戻り値は定数の名前 を含む文字列です。 FlagsAttributeが適用され、 インスタンスの値と等しい1つ以上の名前付き定数の組み合わせが の場合、戻り値は、定数の名前の区切り文字で区切られた の文字列です。それ以外の場合、戻り値は インスタンスの数値の文字列表現になります。だから、理想的にあなたのケースで、それは(FlagsAttributeがが適用されていないと、このインスタンスの値に等しいという名前の定数がある考慮して)正常に動作する必要があります
。あなたは箱の違いについて言えますか?
また、明示的な数字を入力してください。
private enum TimeUnit
{
Day = 1,
Month = 2,
Year = 3
}
私の推測では、.Netのさまざまなバージョンが実行されますか?あなたは単なるunit.ToString()を追加することでそれを解決します。 – Marthin
私はこのディスプレイを違ったものにするのに興味を持っています。それが.NETバージョンの場合、変更されたのはいつですか?なぜですか? –
@マースン私はおそらく.NETバージョン(私は質問に私の答えを入れたいとは思わなかった)が正しいと信じていますが、string.Concatは暗黙的なToString()を引き起こすはずです。書式設定情報を与えずに変更します。 – Liath