2016-04-04 48 views
0

関数emp2で文字列 "final"を呼び出す必要があります。私はそれを試してみると、 "ファイナルは存在しない"と言います。両方の関数は異なるクラスファイルにあります。関数内の変数を別の関数に呼び出す#

internal class emp 
{ 
    internal void empl(int id, string name, string sal) 
    { 
     empdet test = new empdet(id, name, sal); 
     string final = test.ToString(); 
    } 
} 

public class empdetls 
{ 
    public static void emp2(XElement element) 
    { 
     XElement element = XElement.Parse(final); 

     // ... 
    } 
} 

助けていただければ幸いです。

+0

xmlが必要です。およびempdetメソッド。 – jdweng

+0

[scope](https://msdn.microsoft.com/en-us/library/ms973875.aspx)の問題が発生しています。 – Icemanind

+0

2つのことを知らずにこれを克服する方法を教えることは不可能です。まず、who(つまり、どのクラス)が 'emp2'メソッドを呼び出しますか?次に、 'emp2'のメソッドシグネチャを自由に変更できますか? –

答えて

0

プライベートフィールドを使用する必要があります。

public class emp 
{ 
     private String final; 
     internal void empl(int id, string name, string sal) 
     { 

      empdet test = new empdet(id, name, sal); 
      final = test.ToString(); 
     } 

     public static void emp2(XElement element) 
     { 

      XElement element = XElement.Parse(final); 
      ..... 
      ..... 
     } 
} 
+0

これは2つの理由で正しくありません。まず、元のコードからは、 'empl'と' emp2'メソッドが異なるクラスにあるように見えます。第2に、たとえ同じクラス内であっても、静的メソッド 'emp2'から非静的変数' final'にアクセスしようとしているので、あなたのコードはコンパイルされません。 –

+0

どのように私はこれを克服する必要があります – stackdoubt

0

staticメソッドのパラメータを渡すだけです。とにかく、特定のインスタンスは無料でなければなりません。

public static void emp2(XElement element, string final) 
{ 
    // ... 
} 
関連する問題