0

我希望这是一个简单的问题。我正在用 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。我想我可以简单地使用上面的参数。我也尝试过使用参数;这两个都是 VS 中的错误,因为它找不到指令。我也尝试添加我自己的命名空间:namespace MyNameSpace; 在我的 Params 课上。当我这样做时,我仍然无法使用 MyNameSpace;声明,因为它找不到它。

我只想将一堆函数提取到一个可以重用的类中。创建这个类后如何调用它?

- 感谢感谢您的帮助。

4

2 回答 2

2

如果要访问 Main 函数中的 Params 对象,只需在顶部Params p = new Params ();的函数中添加即可。Main

您的问题很可能是 Main 是静态的,这意味着它无法访问它之外的其他非静态的东西。如果您在 Program 类中声明了 Params,除非您将其设为静态,否则无法在 Main 中访问它。

于 2013-01-16T19:19:33.090 回答
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();
        }
    }
}
于 2013-01-16T19:23:06.833 回答