你的問題很模糊,但我想我明白它是什麼你問。
您試圖在您的ExeClass
內部更改的變量未在其中定義,但在本地的Form1_Load
方法中定義。
要獲得ExeClass.p1
方法,您需要將其傳入。
有幾種方法可以做到這一點。但在這種情況下,我會建議您傳遞您的本地變量,然後返回更改的值。
返回從方法有新的變化的方法聲明:
public void p1() // Old
public int p1() // New
這可以讓你從它返回一個int
值。
我們還需要傳遞一個值(局部變量),它是通過改變聲明略偏完成:
public int p1(int value) { ...
現在,我們得到了傳遞給p1
方法的價值,我們可以更改:
public int p1(int value) {
value += 1;
return value;
}
現在,當我們調用函數,該值將被退回,你需要抓住它:
private void Form1_Load(object sender, EventArgs e)
{
int i = 1;
ExeClass p1 = new ExeClass();
int j = p1.p1(i); // See that we pass the `i` variable in here and that we catch the return value in the `j` variable.
Console.WriteLine("Value is now {0}", j); // Will print : "Value is now 2"
}
編輯:
如果你問,如果有從字符串執行C#代碼的方式,那麼你可以看看this thread多一點信息,但如果能避免的話,我會建議不這樣做......
在C#中並不簡單'eval'功能。原則上可以使用函數評估庫,也可以嵌入腳本語言。但你真的應該重新思考你的問題,以避免'eval'。 – CodesInChaos
[我如何動態讀取C#類的屬性?](http://stackoverflow.com/questions/4629/how-can-i-read-the-properties-of-ac-sharp-class -dynamically) –