C# 如何处理不带';不需要分配

C# 如何处理不带';不需要分配,c#,code-formatting,C#,Code Formatting,小例子: class Folder { public List<B> Children = new List<B>(); public string Name; public Folder(string name) { Name = name; } } class File { public Folder Parent; public string Name; public File(Folder parent, str

小例子:

class Folder {
    public List<B> Children = new List<B>();
    public string Name;

    public Folder(string name) { Name = name; }
}
class File {
    public Folder Parent;
    public string Name;

    public File(Folder parent, string name) {
        Parent = parent;
        Name = name;
        Parent.Children.Add(this);
    }
}

Folder folder=new Folder("windows");
new File(folder, "notepad.exe"); //<--- this
new File(folder, "regedit.exe"); //<--- and this
类文件夹{
public List Children=new List();
公共字符串名称;
公用文件夹(字符串名称){name=name;}
}
类文件{
公用文件夹父文件夹;
公共字符串名称;
公共文件(文件夹父级、字符串名称){
父母=父母;
名称=名称;
Parent.Children.Add(此);
}
}
文件夹=新文件夹(“windows”);
新文件(文件夹“notepad.exe”)// 编译器不会“优化”您对
文件
构造函数的调用。然而,你在这里做的不是一个好主意。从用法上看,传递给
文件
构造函数的
文件夹
正在被修改,并且正在存储对新
文件
的引用,因此实际上不会被垃圾收集

考虑这样做:

class Folder 
{
    ...

    public void AddFile(string name)
    {
        Children.Add(new File(this, name));
    }
}
编译器不会“优化”您对
文件
构造函数的调用。然而,你在这里做的不是一个好主意。从用法上看,传递给
文件
构造函数的
文件夹
正在被修改,并且正在存储对新
文件
的引用,因此实际上不会被垃圾收集

考虑这样做:

class Folder 
{
    ...

    public void AddFile(string name)
    {
        Children.Add(new File(this, name));
    }
}

您最好在文件上使用factory方法,或者在文件夹对象上使用将文件添加到文件夹的方法

首先:

class File
{
    public Folder Parent;
    public string Name;

    public static void Create(Folder parent, string name)
    {
        Parent.Children.Add(new File { Parent = parent, Name = name });
    }
}

var folder = new Folder("windows");
File.Create(folder, "notepad.exe");
File.Create(folder, "regedit.exe");
第二项:

class Folder 
{
    public List<File> Children = new List<File>();
    public string Name;

    public Folder(string name) { Name = name; }

    public void Add(string name)
    {
        Children.Add(new File { Parent = this, Name = name });
    }
}


var folder = new Folder("windows");
folder.Add("notepad.exe");
folder.Add("regedit.exe");
类文件夹
{
public List Children=new List();
公共字符串名称;
公用文件夹(字符串名称){name=name;}
公共无效添加(字符串名称)
{
Add(新文件{Parent=this,Name=Name});
}
}
var folder=新文件夹(“windows”);
文件夹添加(“notepad.exe”);
文件夹添加(“regedit.exe”);

这两种模式都可以工作,但第二种模式更适合面向对象设计。

您最好在文件上使用factory方法,或者在文件夹对象上使用将文件添加到文件夹的方法

首先:

class File
{
    public Folder Parent;
    public string Name;

    public static void Create(Folder parent, string name)
    {
        Parent.Children.Add(new File { Parent = parent, Name = name });
    }
}

var folder = new Folder("windows");
File.Create(folder, "notepad.exe");
File.Create(folder, "regedit.exe");
第二项:

class Folder 
{
    public List<File> Children = new List<File>();
    public string Name;

    public Folder(string name) { Name = name; }

    public void Add(string name)
    {
        Children.Add(new File { Parent = this, Name = name });
    }
}


var folder = new Folder("windows");
folder.Add("notepad.exe");
folder.Add("regedit.exe");
类文件夹
{
public List Children=new List();
公共字符串名称;
公用文件夹(字符串名称){name=name;}
公共无效添加(字符串名称)
{
Add(新文件{Parent=this,Name=Name});
}
}
var folder=新文件夹(“windows”);
文件夹添加(“notepad.exe”);
文件夹添加(“regedit.exe”);

两种模式都可以,但第二种模式更符合面向对象设计。

不清楚您的要求。还有,最后3行是这样布置的,没有任何内容吗?@saverioterraciano
在这种情况下,需要做什么才能使这段代码看起来不专业?
,需要做什么才能使这两行不再只是广播中的两条新语句。这三行当然是在某种方法中。如果这三行是在某种方法中,为什么不同时显示包含它们的方法呢?现在还不清楚你所说的专业是什么意思,如果你想要一些关于好的或坏的做法的建议,你最好给出一些关于你试图完成的事情的更多见解。@saverioterraciano这段代码只是我编的一个例子。我不想在某些程序上完成任何事情,只是我经常会遇到这样的情况,我会遗漏一些新的语句。我想摆脱这种习惯,不清楚你在问什么。还有,最后3行是这样布置的,没有任何内容吗?@saverioterraciano
在这种情况下,需要做什么才能使这段代码看起来不专业?
,需要做什么才能使这两行不再只是广播中的两条新语句。这三行当然是在某种方法中。如果这三行是在某种方法中,为什么不同时显示包含它们的方法呢?现在还不清楚你所说的专业是什么意思,如果你想要一些关于好的或坏的做法的建议,你最好给出一些关于你试图完成的事情的更多见解。@saverioterraciano这段代码只是我编的一个例子。我不想在某些程序上完成任何事情,只是我经常会遇到这样的情况,我会遗漏一些新的语句。我想摆脱这种习惯。我的意思是编译器将优化代码本身。“但没关系。”库布布我明白。如果您编写
新的MyClass(…)
作为独立语句,编译器不会删除它。但是,这是一种不好的做法,因为阅读代码的人不清楚为什么创建了
MyClass
的实例,但没有使用它。我的意思是编译器将优化代码本身。“但没关系。”库布布我明白。如果您编写
新的MyClass(…)
作为独立语句,编译器不会删除它。但是,这是一种不好的做法,因为阅读代码的人不清楚为什么创建了
MyClass
的实例,但没有使用它。