Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将主方法分解为方法调用_C#_.net - Fatal编程技术网

C# 将主方法分解为方法调用

C# 将主方法分解为方法调用,c#,.net,C#,.net,目前我的主要方法如下所示: static void main(string[] args) { Object o = new Object("object 1"); Object o1 = new Object("object 2"); Object o2 = new Object("object 3"); List<Object> objects = new List<Objects>(); objects.add(o); objects.add(o1); obje

目前我的主要方法如下所示:

static void main(string[] args)
{
Object o = new Object("object 1");
Object o1 = new Object("object 2");
Object o2 = new Object("object 3");

List<Object> objects = new List<Objects>();

objects.add(o);
objects.add(o1);
objects.add(o2);
}
static void main(字符串[]args)
{
对象o=新对象(“对象1”);
对象o1=新对象(“对象2”);
对象o2=新对象(“对象3”);
列表对象=新列表();
添加(o);
对象。添加(o1);
添加(o2);
}

我希望通过将主方法分解为方法调用来清理代码。但是,这会导致可访问性问题,即由于方法分离,对象无法找到对象

class Program
{

static void main(string[] args)
{
   createObjects();
   objectHolder();
   addObjects();
}

public void createObjects()
{
   Object o = new Object("object 1");
   Object o1 = new Object("object 2");
   Object o2 = new Object("object 3");
}

public void ObjectHolder
{
   List<Object> objects = new List<Objects>();
}
public void addObjects()
{
   objects.add(o);
   objects.add(o1);
   objects.add(o2);
}
}
类程序
{
静态void main(字符串[]参数)
{
createObjects();
objectHolder();
addObjects();
}
public void createObjects()
{
对象o=新对象(“对象1”);
对象o1=新对象(“对象2”);
对象o2=新对象(“对象3”);
}
公共无效异议持有人
{
列表对象=新列表();
}
public void addObjects()
{
添加(o);
对象。添加(o1);
添加(o2);
}
}

您可以做很多不同的事情来改进此代码,但就您最初的问题而言,一个好的第一步是将您的业务逻辑隔离到一个单独的类中,然后实例化:

class Program
{

    static void main(string[] args)
    {
        ObjectManager objects = new ObjectManager();
        objects.AddObject(objects.CreateObject("object 1"));
        objects.AddObject(objects.CreateObject("object 2"));
        objects.AddObject(objects.CreateObject("object 3"));
    }
}

class ObjectManager
{
    public List<Object> Objects { get; set; }

    public ObjectManager()
    {
        Objects = new List<Object>();
    }

    public Object CreateObject(string name)
    {
        Object o = new Object(name);
        return o;
    }

    public void AddObject(Object o)
    {
        Objects.Add(o);
    }
}
类程序
{
静态void main(字符串[]参数)
{
ObjectManager对象=新建ObjectManager();
objects.AddObject(objects.CreateObject(“对象1”));
objects.AddObject(objects.CreateObject(“对象2”));
objects.AddObject(objects.CreateObject(“object3”));
}
}
类对象管理器
{
公共列表对象{get;set;}
公共对象管理器()
{
对象=新列表();
}
公共对象CreateObject(字符串名称)
{
对象o=新对象(名称);
返回o;
}
公共void AddObject(对象o)
{
添加(o);
}
}

在此代码中,ObjectManager包含所有业务逻辑。您实例化它,并在其构造函数中初始化列表,以便以后不会得到空引用。然后可以使用该ObjectManager上的方法添加列表中所需的每个对象。

您知道方法参数吗?只需使用默认集合初始值设定项。实例化列表并一次性添加所有对象。再干净不过了