Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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_Class_Methods - Fatal编程技术网

C# 在类中使用方法

C# 在类中使用方法,c#,.net,class,methods,C#,.net,Class,Methods,我有两节课。例如,让它们成为目录和文件。有我自己的自定义类,而不是.NET Framework的一部分。 所以,目录有标题字段和文件列表。文件也有几个字段 我应该将按目录标题返回文件列表的方法放在哪里,例如, 目录类还是文件类 i、 e.以下哪项更好: public List<Files> Directory.GetFiles(string directoryTitle){...} public List<Files> File.GetFilesByDirectory(s

我有两节课。例如,让它们成为目录和文件。有我自己的自定义类,而不是.NET Framework的一部分。 所以,目录有标题字段和文件列表。文件也有几个字段

我应该将按目录标题返回文件列表的方法放在哪里,例如, 目录类还是文件类

i、 e.以下哪项更好:

public List<Files> Directory.GetFiles(string directoryTitle){...}
public List<Files> File.GetFilesByDirectory(string directoryTitle){...}
public List Directory.GetFiles(string directoryTitle){…}
公共列表文件.GetFilesByDirectory(字符串目录标题){…}
为什么呢?

两个想法:

首先,它是知道列出文件的目录,所以它应该位于该目录中

其次,尝试使用返回类型的接口-IList而不是List。这为您返回不同类型的列表和单元测试提供了更大的灵活性。

我认为第一个更好

public List Directory.GetFiles(string directoryTitle){…}

因为文件本身不应该知道它位于何处,目录也应该知道它包含哪些文件。

您实际将它们放在何处是您自己的特权,但我想说,在本例中使用第一个版本在语义上更合理:
Directory.GetFiles
。NET框架实际上公开了一个
目录
类,您可以使用该类作为示例,其中包含这样一个方法


考虑到目录实例已经包含了一个已知文件的列表,从另一个角度来看,这样做似乎有点违反直觉。

我个人会将这两个类都放在一边,创建一个第三个类来完成最大限度地提高代码重用机会的工作。称之为DirectoryFileFinder或类似的东西

它应该返回
IEnumerable
ReadOnlyCollection
,而不是
List
。有什么问题?@Groo-这只是一个例子。“我指的是任何类的这种情况,”Tannhueser-但答案将取决于您正在建模的域。对于文件和目录可能为真的内容对于例如Dog和Cat将不为真。“任何类”都没有单一的正确答案。@ShellShock-我的失败,当然不是“任何类”,而是相互关联的类。像User和Order等。正如上面提到的@SLaks一样,对于返回类型,只读集合(或数组,或
IEnumerable
)将是更好的选择。@Groo:不是数组;数组不是只读的,必须调整大小以适合。@SLaks:只读集合或数组。我个人只考虑<代码> iQueabd,但是<代码>目录.GETFrase(以及许多其他BCL类)返回数组。与
列表
@Groo:array-returning-framework方法早于泛型相比,如果没有其他方法的话,则需要额外的努力来调整它的大小。现代代码不应该返回数组,因为它需要在填充数组后调整数组大小以适应它(与集合不同)
public List<Files> Directory.GetFiles(string directoryTitle){...}