将变量从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();
}
}
}
您应该定义公共属性或公共字段
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部分的可靠性
- 从xml节点读取并创建客户列表
- 在客户列表上执行数据库操作(如触发存储过程、写值等)
此外,您可以创建另一个类来执行您在控制台应用程序中执行的操作(业务逻辑)。这将允许您在将其移动到另一个应用程序(如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";
}