2012-01-03 162 views
3

我正在對着牆壁狠狠地敲打着我的頭。我在C#控制檯應用程序中有幾個我想要重用的變量。但是,我不能在我的生活中重新使用另一個班的變量。我很樂意提供任何幫助或指引 - 我已經搜索了很長時間,而且我完全陷入了困境。將變量從Main函數傳遞到另一個C#類

編輯:是的,變量是我的主要功能。對不起,這個離開了。

編輯:下面沉重的編輯代碼。我想在其他課程中重用的變量值在中間。還有更多,但這3個應該足夠樣本。感謝您的幫助!

public static class MyApp 
    { 
     static void Main(string[] args) 
     { 
      // loads XML doc 
      foreach (XmlNode node in nodes) 
      { 
      try 
       { 
        // does a bunch of stuff 

        // Parses variables from REST API 

        XDocument docdetailxml = XDocument.Parse(xmldoc); 

        XNamespace ns = docdetailxml.Root.GetDefaultNamespace(); 

        var buid = docdetailxml.Root.Element(ns + "busid").Value; 
        var bname = docdetailxml.Root.Element(ns + "busname").Value; 
        var bcount = docdetailxml.Root.Element(ns + "buscount").Value; 

        // Invoke SQL connection string 

        // Trigger Stored Procedure and write values to database 

        // If needed, trigger email notification 

        // Close connections 
       } 
       catch (Exception e) 
       { 

        Console.WriteLine("Error encountered: " + e.Message); 

        // Exit the application 
        System.Environment.Exit(1); 

       } 
       finally 
       { 
        // Exit the application 
        // System.Environment.Exit(0); 
       } 

      } 

     } 

     private static void GetConnectionString() 
     { 
      throw new NotImplementedException(); 
     } 

     private static void GetConnectionStrings() 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 
+0

你是指傳遞給你的'Main'函數的'string [] args'嗎?你能顯示迄今爲止製作的代碼嗎? – Default 2012-01-03 07:53:49

+0

你有代碼示例來顯示出現問題嗎?這會幫助我們一點。 – 2012-01-03 07:53:57

+0

請發佈您的控制檯應用程序的代碼。 – 2012-01-03 07:53:57

回答

2

如果變量表示關於物體(例如姓名,ID等)的一些信息那麼就應該在class進行封裝。應該使用該類的實例(稱爲object)來訪問此信息。

由於您已經有表示對象的變量,下一步就是將這些變量分組到類中。這些變量在該類中表示爲properties。對這些成員進行的操作應爲methods。此外,access modifiers決定成員的可見性。通過您的示例,我可以確定代表客戶的3個變量(假設,我不確定確切的用例)。這些將形成客戶類。

class Customer 
{ 
    // You can either pass the UID through the constructor or 
    // expose a public setter to allow modification of the property 
    public Customer(string uid) 
    { 
     this.UID = uid; 
    } 

    public string UID { get; private set; } 
    public string Name { get; set; } 
    public string Count { get; set; } 
} 

此外,foreach循環可以從XML節點被分成2份爲resuablity

  1. 讀取並創建客戶
  2. list
  3. 執行數據庫操作(如觸發存儲過程,寫入值等)

此外,您可以創建另一個類, es您在控制檯應用程序中執行的操作(業務邏輯)。這將允許您重複使用相同的邏輯,以防將其移至其他應用程序(如winforms或web服務)。

更多信息

2

你應該定義公共財產或公共領域

public class Student 
{ 
public string Name {get;set;} 
} 

,當你想傳遞價值,你可以將此值賦給財產

Student st = new Student(); 
st.Name = "your value"; 

,或者您可以使用類的構造函數了。

-1

程序類可能是靜態的,所以你必須通過類名而不是實例來訪問這些字段。

class Program 
{ 
    public string Name = "a name"; 

    static void Main(string[] args) 
    { 
     Name = "Hello"; //You can't do this, compile error 
     Program p = new Program(); 
     p.Name = "Hi"; //You can do this 

     SecondName = "Sn"; //You can do this 
     Program.SecondName = "Tr"; //You can do this too 
    } 
    public static string SecondName = "Peat"; 
} 
1

我認爲這個網站有一個專門的struts論壇,最好看看有更多的信息。

快速回答:將值從一個動作傳遞到另一個動作(我認爲您正在使用struts Action類?)的主要方法是將值放入請求或會話中(因此,您的第一份工作是閱讀這些主題:HttpServletRequest和HttpSession)。 Struts操作類在execute()方法中執行它們的工作,並且該方法具有類型爲HttpServletRequest的參數。從請求中您可以獲得會話的句柄。

而請求和會話都提供方法getAttribute()和setAttribute()。因此,要將數據從一個動作傳遞到另一個動作,請將該數據設置爲(請求或會話)屬性,然後再次讀出下一個動作中的屬性。

相關問題