- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在规划我的程序时,我经常以这样的思路开始:
A football team is just a list of football players. Therefore, I should represent it with:
var football_team = new List<FootballPlayer>();
The ordering of this list represent the order in which the players are listed in the roster.
string
代表队名等。
Okay, a football team is just like a list of players, but additionally, it has a name (a
string
) and a running total of scores (anint
). .NET does not provide a class for storing football teams, so I will make my own class. The most similar and relevant existing structure isList<FootballPlayer>
, so I will inherit from it:class FootballTeam : List<FootballPlayer>
{
public string TeamName;
public int RunningTotal
}
List<T>
.我对这个指南在两个方面感到非常困惑。
List
is somehow optimized for performance .为何如此?如果我扩展
List
会导致什么性能问题?究竟会破什么?
List
由微软提供,我无法控制,所以
I cannot change it later, after exposing a "public API" .但我很难理解这一点。什么是公共(public) API,我为什么要关心?如果我当前的项目没有也不太可能有这个公共(public) API,我可以安全地忽略这个指南吗?如果我确实继承自
List
事实证明我需要一个公共(public) API,我会有什么困难?
List
,他们为什么不上课
sealed
?
Collection
应该扩展的类而不是
List
.但是这个类很空,有用的东西不多,
such as AddRange
, 例如。
jvitor83's answer为该特定方法提供了性能原理,但速度如何慢
AddRange
不比没有好
AddRange
?
Collection
比从
List
继承更多的工作,我看不出有什么好处。微软肯定不会无缘无故地告诉我做额外的工作,所以我不禁觉得我不知何故误解了一些东西,并继承了
Collection
实际上不是我的问题的正确解决方案。
IList
之类的建议。 .就是不行。这是几十行样板代码,对我没有任何帮助。
List
在某事:
class FootballTeam
{
public List<FootballPlayer> Players;
}
my_team.Players.Count
而不仅仅是 my_team.Count
.值得庆幸的是,使用 C# 我可以定义索引器使索引透明,并转发内部 List
的所有方法。 ...但这是很多代码!所有这些工作我能得到什么? list
的
things
有一些花里胡哨?
List<T>
总是不能接受?什么时候可以接受?为什么/为什么不?程序员在决定是否从
List<T>
继承时必须考虑什么或不?
最佳答案
这里有一些很好的答案。我会向他们补充以下几点。
What is the correct C# way of representing a data structure, which, "logically" (that is to say, "to the human mind") is just a list of things with a few bells and whistles?
A football team is a particular kind of _____
List<T>
是一种机制。足球队是一个业务对象——也就是说,一个代表程序业务领域中的一些概念的对象。不要混合这些!足球队是一种团队;它有一个名册,名册是一份球员名单。名册不是特定类型的球员名单。名册是球员名单。所以创建一个名为
Roster
的属性那是一个
List<Player>
.并使它
ReadOnlyList<Player>
除非你相信每个了解足球队的人都可以从名单中删除球员。
Is inheriting from
List<T>
always unacceptable?
When is it acceptable?
List<T>
的机制时机制。
What must a programmer consider, when deciding whether to inherit from
List<T>
or not?
But that's a lot of code! What do I get for all that work?
List<T>
的相关成员编写转发方法。五十多次。你显然不怕冗长,我们在这里讨论的是非常少量的代码;这是几分钟的工作。
关于c# - 为什么不从 List<T> 继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722074/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!