为什么在面试过程中很难回答“给您带来有关C#的五件事”的问题?[关闭]
在第73播客中,乔尔·斯波斯基(Joel Spolsky)和杰夫·阿特伍德(Jeff Atwood)讨论了“每个人都应该讨厌自己喜欢的编程语言的五件事”: 如果您对当前的工具链感到满意,则无需切换。但是,如果您不能列出您最不喜欢的编程语言的五件事,那么我认为您还不了解它。最好知道这些替代方法,并且对所使用的任何方法都保持批判的眼光。 很好奇,我问了我面试的任何候选人这个问题。他们中没有人能够引用他们至少讨厌C#¹的一件事。 为什么?这个问题有什么困难?正是由于面试压力大,被访者无法回答这个问题? 这个问题有什么问题使面试不好吗? 显然,这并不意味着C#是完美的。我自己列出了我不喜欢C#的五件事: 泛型中缺乏可变数量的类型(类似于params参数)。 Action<T>, Action<T1, T2>, Action<T1, T2, T3>, ⁞ 严重? Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> 缺少对度量单位的支持,例如在F#中。 缺少只读属性。private readonly每当我想要只读属性时,都会写一个后备字段。 缺少具有默认值的属性。是的,我知道我可以在无参数构造函数中对其进行初始化,并从所有其他构造函数中调用它。但是我不想。 多重继承。是的,它会引起混乱,在大多数情况下您不需要它。它在某些(非常罕见)的情况下仍然有用,并且混淆也适用于该类(该类在C#中已解决),该类继承了多个包含相同名称的方法的接口。 我敢肯定,这个清单还远远不够完整,还有很多要强调的地方,尤其是比我的要好得多的地方。 ¹一些人批评.NET Framework中的某些程序集,或者该框架中缺少某些库,或者批评CLR。这不算什么,因为问题是关于语言本身的,尽管我可能会接受有关.NET Framework核心否定性问题的答案(例如,诸如以下事实这样的事实:没有通用接口TryParse,所以如果您想将字符串解析为几种类型,则必须对每种类型重复一次),关于JSON或WCF的答案完全是题外话。