无法访问我刚刚创建的类

时间:2013-01-16 19:17:33

标签: c# oop class

我希望这是一个简单的问题。我正在用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 谢谢你的帮助。

2 个答案:

答案 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();
        }
    }
}