Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
3年前关闭。
我最近在学习C#并具有强大的C ++背景,鉴于我对C ++的了解和经验,我对C#有一些不太了解。
在C ++中,人们确实非常在乎一致性,否则就不可能使用模板元编程来编写通用代码。但是,在C#中,人们似乎不太在乎均匀性。例如,虽然数组类型具有
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
3年前关闭。
我最近在学习C#并具有强大的C ++背景,鉴于我对C ++的了解和经验,我对C#有一些不太了解。
在C ++中,人们确实非常在乎一致性,否则就不可能使用模板元编程来编写通用代码。但是,在C#中,人们似乎不太在乎均匀性。例如,虽然数组类型具有
Length
属性,但List<T>
使用Count
。虽然数组类型的IndexOf
,LastIndexOf
等是静态方法,但与List<T>
对应的不是。这给我的印象是,C#实际上不是在统一,而是在努力使自己变得不统一。这对我来说没有意义。由于C#不支持模板元编程,因此均匀性并不像C ++中那么重要。但是,仍然可以在许多其他方面受益。例如,人类将更容易学习和掌握。当事物高度统一时,您就可以掌握其中的一切,并且掌握了一切。请注意,我既不是C ++狂热者,也不是顽固的。我只是不太了解。 最佳答案
您在这里遇到了一个概念性问题。List<T>
和其他带有它的集合类不是C#构造。它们是BCL中的类。本质上,您可以使用任何.NET语言中的任何BCL类,而不仅仅是C#。如果您要问为什么BCL类在某些方面有所不同,那不是因为设计师不尊重或不希望统一性。这可能是出于(至少两个)原因之一:
1)BCL和FCL随时间演变。您可能会发现在添加泛型之前和之后引入的类之间存在很大的差异。一个示例DataColumnCollection
是IEnumerable
(而不是IEnumerable<DataColumn>
)。这导致您需要强制转换以执行some operations。
2)方法的含义有细微的差别。我相信.Length
暗示某处有一个静态数字,其中.Count
暗示可能需要执行一些操作才能获取列表中的项目数。
关于c# - 为什么C#似乎不关心均匀性? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36481445/
10-09 13:22