2016-07-05 28 views
-2

私はこの方法で同じパラメータを使用することはできませんDetermineCarValueメソッドで同じパラメータを使用することはできません。 CS0136

public static decimal DetermineCarValue(Car carValue) 
     { 
      decimal carValue = 100.0M; 
      return carValue; 
     } 

私は私はあなたがあなた自身の質問答え

CS0136 A local or parameter named 'carValue' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter 
+7

エラーは明白ではありませんか? – haim770

+4

'Car'型のパラメータと' decimal'型のローカル型の両方として 'carValue'を持っています。あなたは2人のうちの1人に別の名前をつける必要があります。 –

+0

あなたは質問ボックスに貼り付ける前にエラーメッセージを読んでいないと言っていますか? –

答えて

10

このエラーを取得carValueパラメータを入力する場合:

メソッドのパラメータで同じパラメータを使用できません。

ローカルメソッド変数carValueの名前を変更します。

同じ名前の2つの変数があります.1つはメソッドに渡され、もう1つはメソッド内で宣言されたものです。

public static decimal DetermineCarValue(Car carValue) 
{ 
    decimal carValue = 100.0M; 
    return carValue; // which carValue ? of type Car or decimal ? Confusing 
} 

私は本当にこのメソッドが行うことになっているのか分からないが、あなたはCarオブジェクトにいくつかのプロパティを更新することを意図している場合、あなたはこれを行うことができます。

public static decimal DetermineCarValue(Car car) 
{ 
    // suppose you have property called Value in your Car class 
    car.Value = 100.0M; 
    return car.Value; 
} 

は結論:

は、メソッドパラメータと同じ名前のメソッド変数を宣言できません。より正確には、同じスコープ内で同じ名前の識別子を2つ持つことはできません。

4

私はあなたには分かりませんコンパイラのエラーを言い換えるつもりです。

Car型パラメータに使用した識別子は、同じスコープで宣言した小数点型変数に使用した識別子と同じです(スコープはメソッドに制限されています)。これはあいまいさを引き起こし、コンパイラがどの変数を参照しているのかを判断することを不可能にします。この問題を解決するには、パラメータまたは定義済みの変数の名前を変更します。

変数carValueをオーバーロードする場合は、単にサポートされていないことに注意してください。

関連する問題