2

次のコードでC#デスクトップアプリケーションを作成しています。

static class ClassA
{
     public static string Process()
     {
          string temp = Functions.Test();
          return temp;
     }
}

static class Functions
{
     public static string Test()
     {
          return "ok";
     }
}

問題は、変数「temp」がTest()関数から値を取得しないことです。イミディエイトウィンドウでその値を確認しようとすると、「名前'temp'は現在のコンテキストに存在しません」というメッセージが表示されます。

ClassAとFunctionsはどちらも別々のクラスファイルにありますが、同じ名前空間に属しています。

4

4 に答える 4

2

これは古い質問ですが、新しい開発者にも役立つことを願っています。同様の問題に遭遇し、2つのクラス(2つの異なるプロジェクトにある)が2つの異なるフレームワークを対象としていることに気付きました。それらを両方のターゲットNetFramework4.5に切り替えると、完全にコンパイルされ、この問題は発生しませんでした。

于 2015-02-22T20:44:49.960 に答える
1

エラーを再現できる唯一の方法は、チェックすることです

? temp

コードが実行されていないときのイミディエイトウィンドウで。

で実際のメソッドを呼び出す場合

? ClassA.Process()

それはうまく機能します。

また、return temp;行にブレークポイントを設定してプログラムを実行すると、チェック時にイミディエイトウィンドウで正しい結果が得られます。

? temp

デバッガーがブレークポイントで停止したとき。この時点で、現在のコンテキストになりますtemp

于 2012-04-23T18:29:12.120 に答える
1

で試してみてください

static class ClassA
{
 string temp = Functions.Test();
 public static string Process()
 {
      return temp;
 }
}

static class Functions
{
 public static string Test()
 {
      return "ok";
 }
}
于 2012-04-22T23:51:23.543 に答える
0

コードに以下を追加します。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(ClassA.Process());
        Console.ReadLine();
    }
}

「ok」を返します

コードに他の問題があります。

于 2012-04-22T17:57:01.073 に答える