我用这个严厉地撞在墙上。我在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();
}
}
}
答案 0 :(得分:2)
如果变量表示某个对象的某些信息(如name,id等),那么它们应该封装在class中。应该使用类的实例(称为object)来访问此信息。
由于您已经拥有表示对象的变量,因此下一步是将这些变量分组到类中。这些变量在类中表示为properties。对这些成员执行的操作应该以methods的形式提供。此外,access modifiers决定了成员的可见性。
通过您的示例,我可以识别出代表客户的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个部分以实现可恢复性
此外,您可以创建另一个类来执行您在控制台应用程序中执行的操作(业务逻辑)。这将允许您重复使用相同的逻辑,以防您将其移动到另一个应用程序(如winforms或Web服务)。
更多信息
答案 1 :(得分:2)
你应该定义公共财产或公共领域
public class Student
{
public string Name {get;set;}
}
如果要传递值,可以将此值指定给属性
Student st = new Student();
st.Name = "your value";
或者您也可以使用类构造函数。
答案 2 :(得分:1)
我认为这个网站上有专门的struts论坛,最好看看那里有更多信息。
快速回答:将值从一个操作传递到另一个操作的主要方法(我认为您正在使用struts Action类?)是将值放入请求或会话中(因此,第一个工作就是读取关于这些主题:HttpServletRequest和HttpSession)。 Struts动作类在execute()方法中完成它们的工作,该方法的参数类型为HttpServletRequest。从请求中,您可以获得会话句柄。
请求和会话提供方法getAttribute()和setAttribute()。因此,要将数据从一个操作传递到另一个操作,请将该数据设置为(请求或会话)属性,然后再次在下一个操作中读取该属性。
答案 3 :(得分:-1)
Program类可能是Static,因此您必须按类名而不是实例访问这些字段。
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";
}