2015-05-24 54 views
-2
class ExeClass 
{ 
    public void p1() 
    { 
     //Execute String 
     string p = "i=i+1;"; 
     //How To This 
    } 
} 

主要方法在C#中執行字符串代碼同時在課堂上

private void Form1_Load(object sender, EventArgs e) 
{ 
    int i = 1; 
    ExeClass p1 = new ExeClass(); 
    p1.p1(); 
    int j = i;//Now the amount i,j is the equal to 2 
} 
+0

在C#中並不簡單'eval'功能。原則上可以使用函數評估庫,也可以嵌入腳本語言。但你真的應該重新思考你的問題,以避免'eval'。 – CodesInChaos

+0

[我如何動態讀取C#類的屬性?](http://stackoverflow.com/questions/4629/how-can-i-read-the-properties-of-ac-sharp-class -dynamically) –

回答

0

你的問題很模糊,但我想我明白它是什麼你問。

您試圖在您的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多一點信息,但如果能避免的話,我會建議不這樣做......

+0

嗨 我很抱歉,我說 我的問題是不計算 我只是想舉一個簡單的例子來說明 我的問題是,當用戶刪除數據刪除 –

+0

之前 類被激活,以檢查數據尚未使用 如果您使用錯誤 對於此錯誤,有一列中必須運行聯繫人數據 。有動態代碼 問題是,使用了很多代碼 而且由於類我寫了代碼 –

+0

實際上,而不是計算代碼位於ModelState.AddModelError(「Name」,「this is used」); –