2009-05-22 5 views
6

のような何か:メソッドパラメータをrefまたはvalue(C#)で渡す一般的な短いガイドラインですか?

  • メソッド呼び出し後の変数の値が返さなければならない場合:
  • インスタンス化する必要がない場合、メソッド呼び出しの使用REF
  • 前にインスタンス化することができる場合

  • 変数の値はどちらもアウトREF

  • を使用していないメソッド呼び出しから他の値を戻す、決定または算出するために使用されている場合、コール前に

  • を使用

正しく取得できましたか?あなたの短いガイドラインは何ですか?

答えて

0

これは本当に値型の場合は、あなたの質問が、私が発見した(outキーワードを使用して)参照して値を渡すの一つの良い使い方...

int i = 0; 

if (int.TryParse("StringRepresentation", out i) 
{ 
    // do something with i which has taken the value of a the previous successful TryParse 
} 
4

に答えているかどうかわからない:

あなたはちょうどあなたが、元の店でそれを変更する必要がある場合(値によって)
  • をデフォルト渡す方法を使用含まれている値を使用して、元の場所でそれを変更しないようにしたい場合は

    • 、REFを使用しています。例:参照型の場合

      int a = -3; 
      
      protected void EnsurePositiveValues(ref int value) 
      { 
          if (value < 0) 
           value = 0; 
      } 
      

    :あなただけのインスタンスを使用するか、それが参照することにより、デフォルトの受け渡し方法を(使用変更する必要がある場合は

    • ;「参照コピーによって」と呼ばれるべき)
    • 元の参照で(再)割り当てが必要な場合は、refを使用します。例:

      User u = MembershipAPI.GetUser(312354); 
      
      protected void EnsureUser(ref User user) 
      { 
          if (user == null) 
           user = new User(); 
      } 
      
  • 1

    あなたはまた、アカウント値と参照型に取る必要があります。パラメータとしてメソッドに参照型を渡すときは、ポインタを変数に渡します。これは、メソッド内で変数を変更することができ、メソッドを呼び出したコードで使用できることを意味しますが、nullに設定すると、ポインタをnullに設定するだけで、変数は変更されませんメソッドが返されます。

    関連する問題