1

では、Int32 などの null 許容値型を渡したい場合はどうすればよいでしょうか? メソッドに入れるには、メソッド パラメータに nullable であることを伝える必要があります。

public void foo(Int32? arg){...}

通常の Int32 を arg に渡すと、機能します。しかし、私がそれを

public void foo(Int32 arg){...}

nullable を渡します。

だから私の質問はですか?Int32 の型を変更しますか?

Int32はありますか?オブジェクトか? Int32 にフラグを設定して null 可能にするだけですか?

基本的に、私はボンネットの下で何が起こっているのかを尋ねています。

4

3 に答える 3

2

Nullable 構造体は int 型から int への暗黙的な変換を実装しますか? 一方、他の方法は明示的であるため、最初のケースでは変換は暗黙的であり、2 番目のケースでは明示的なキャストを行う必要があります。以下は、Nulable 構造体からのコードの抜粋です。

    public static implicit operator T?(T value)
{
   return new T?(value);
}
public static explicit operator T(T? value)
{
   return value.Value;
}
于 2013-07-30T14:02:33.620 に答える
2

Int32?は の短縮形なNullable<Int32>ので、これらは 2 つの異なるタイプです。はにInt32暗黙的にキャストできますNullable<Int32>が、その逆はできません。

http://msdn.microsoft.com/de-de/library/b3h38hb0(v=vs.100).aspxでは、次の 2 つの演算子を確認できます。

Explicit(Nullable<T> to T): Returns the value of a specified Nullable<T> value.
Implicit(T to Nullable<T>): Creates a new Nullable<T> object initialized to a specified value.
于 2013-07-30T13:59:03.877 に答える
0

Int32?と同義であるNullable<Int32>か、単にプレーンであるNullable<int>か、さらにはint?

int?は値型であり、値を持つことができますnull。そのため、型の関数引数に渡すことができませんint-その値が だった場合はどうなりnullますか?

于 2013-07-30T14:00:51.533 に答える