我希望这是一个简单的问题。我正在用C#构建一个简单的控制台应用程序。我有一节课:
using System;
using Filter;
public class Params
{
public string key;
public bool distinct;
public List<string> fields;
public string filter;
public int limit;
public int skip;
public bool total;
public List<Tuple<string, GroupType>> group;
public List<Tuple<string, OrderType>> order;
public Params()
{
key = "";
distinct = false;
fields = new List<string>();
filter = "";
group = new List<Tuple<string, GroupType>>();
limit = 0;
order = new List<Tuple<string, OrderType>>();
skip = 0;
total = false;
}
public void AddGroup(string field, GroupType type)
{
group.Add(new Tuple<string, GroupType>(field, type));
}
public void AddOrder(string field, OrderType type)
{
order.Add(new Tuple<string, OrderType>(field, type));
}
}
我的程序.cs类是:
namespace csharpExample
{
class Program
{
public static void Main(string[] args)
{
Params p = new Params();
Console.WriteLine("Test");
}
}
}
我想在我调用Main()的program.cs类中使用Params。我以为我可以简单地使用上面的Params。我也尝试过使用Params;这两个都是VS中的错误,因为它找不到指令。我也尝试添加自己的命名空间:namespace MyNameSpace;在我的Params课程周围。当我这样做时,我仍然无法使用MyNameSpace;声明,因为它无法找到它。
我只想将一堆函数提取到一个可以重用的类中。一旦它被创建,我该怎么称呼它?
-Thanks 谢谢你的帮助。
答案 0 :(得分:2)
如果您想访问Main函数中的Params对象,只需将Params p = new Params ();
添加到顶部的Main
函数。
很可能你的问题是Main是静态的,这意味着它无法访问其他非静态的东西。如果您在Program类中声明了Params,除非您将其设置为静态,否则无法在Main中访问它。
答案 1 :(得分:0)
您是在谈论调用构造函数还是正在设置的属性?您可以将类设置在基类的顶部,然后调用它的实例。但由于它是一个静态类,你应该在main中使用一个辅助方法。
namespace Example
{
public class Program
{
Params p = new Params();
string writefromParams() // I exist just to give the string back from params with a nonstatic method
{
return p.key;
}
static void Main(string[] args)
{
Program p2 = new Program(); // set up a new instance of this very class
Console.WriteLine(p2.writefromParams()); // get non static method from class
Console.ReadLine();
}
}
}