将变量从Main函数传递到另一个c#类

本文关键字:另一个 变量 Main 函数 | 更新日期: 2023-09-27 18:19:13

这件事真让我头痛。我在c#控制台应用程序中有几个变量,我想重用它们。但是,我无论如何也不能在另一个类中重用这些变量。我希望你能提供任何帮助或指导-我已经搜索了相当长的时间,我完全被难住了。

编辑:是的,变量在我的Main函数内。

编辑:下面的代码经过大量编辑。我想在另一个类中重用的变量值位于中间。还有更多,但这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();
        }
    }
}

将变量从Main函数传递到另一个c#类

您应该定义公共属性或公共字段

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

当你想传递值时,你可以把这个值赋给属性

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

如果变量表示有关对象的一些信息(如名称,id等),则应该将它们封装在类中。应该使用类的实例(称为对象)来访问这些信息。

由于已经有了表示对象的变量,下一步将是将这些变量分组到类中。这些变量表示为类中的属性。对这些成员执行的操作应该作为方法可用。此外,访问修饰符决定了成员的可见性。

通过您的示例,我可以识别代表客户的3个变量(假设,我不确定确切的用例)。这些将形成Customer类。

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环可分为2部分的可靠性

  1. 从xml节点读取并创建客户列表
  2. 在客户列表上执行数据库操作(如触发存储过程、写值等)

此外,您可以创建另一个类来执行您在控制台应用程序中执行的操作(业务逻辑)。这将允许您在将其移动到另一个应用程序(如winforms或web service)时重用相同的逻辑。

更多信息

  • 面向对象编程
  • c#中面向对象的概念面向对象设计原则

我想这个网站上有一个专门的struts论坛,最好看看那里有更多的信息。

快速回答:将值从一个动作传递到另一个动作的主要方式(我认为您正在使用struts action类?)是将值放入请求或会话(因此,您的第一项工作是阅读这些主题:HttpServletRequest和HttpSession)。Struts操作类在execute()方法中完成它们的工作,该方法有一个HttpServletRequest类型的参数。您可以从请求中获得会话的句柄。

请求和会话都提供getAttribute()和setAttribute()方法。因此,要将数据从一个操作传递到另一个操作,请将该数据设置为(请求或会话)属性,然后再次在下一个操作中读出该属性。

Program类可能是静态的,所以您必须通过类名而不是实例来访问这些字段。

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";
}