草庐IT

应不应该

全部标签

c# - 在 C# 中返回数组是错误的形式吗?我应该返回 List<T> 吗?

我有一个返回可变数量元素的函数,我应该返回数组还是列表?“集合”的大小一旦返回就不会改变,即出于所有目的集合都是不可变的。我想只返回一个数组,但有些人说不要从函数返回可变大小的数组,因为它是“糟糕的形式”。不确定为什么?这需要与.NET2.0兼容有关系吗? 最佳答案 如果不需要返回数组是一种不好的形式,尤其是返回List.通常,您需要返回IEnumerable或IList.如果您的用户只需要遍历每个元素,IEnumerable将提供这种能力。它还允许您使用延迟执行潜在地(现在或以后)实现例程。如果你的用户需要通过索引访问元素,返回I

c# - c# 类应该生成自身的实例吗?

我有一个定义CallRate类型的类。我需要添加通过从文件中读取数据来创建我的类的多个实例的能力。我在类CallRate中添加了一个静态方法,它返回一个List.一个类可以通过调用它自己的构造函数之一来生成它自己的新实例吗?它有效,我只是想知道这样做是否正确。Listcr=CallRates.ProcessCallsFile(file); 最佳答案 从静态方法中获取它自己的对象是完全没问题的。例如其中一个点网库做的事情和你做的一样,XmlReadrerreader=XmlReader.Create(filepathString);

c# - 为什么应该使用 C# 预定义类型而不是系统命名空间中的别名

在JuvalLowy的“C#编码标准”中,可从www.idesign.net获得,建议使用C#预定义类型而不是System命名空间中的别名,例如:object不是Objectstring不是Stringint不是Int32这样做有什么好处?它们有何不同?我在自己的编码中遵循了这个建议,但不知道它们有何不同。 最佳答案 它们意外不同的主要时间是当某人愚蠢到调用类型(或属性/字段/等)String(例如)时,因为string始终指的是global::System.String,其中String可能是YourNamespace.Strin

c# - "or"应该与 .Net4 Hasflags 一起工作 : enum. HasFlag(AccessRights.Read | AccessRights.Write)

我正在尝试新的HasFlags功能,并想知道以下应该工作:enum.HasFlag(AccessRights.Read|AccessRights.Write)...因为好像没有...DBAccessRightsrights=(DBAccessRights)permission.PermissionFlags;if(rights.HasFlag(DBAccessRights.WikiMode)){//works}if(rights.HasFlag(DBAccessRights.WikiMode|DBAccessRights.CreateNew)){//Doesn'twork}DBAcce

c# - WPF:为什么我应该使用现有的 MVVM 框架而不是编写自己的框架?

我想知道MVVM框架能给我带来什么好处(例如mvvmlight、prism等)。如果你能给我从最重要到最不重要的要点。我只是想了解我是应该使用MVVM框架还是自己编写代码。 最佳答案 您可以在没有框架的情况下开始使用MVVM,并且可以随着时间的推移构建自己的基础代码。它可能会帮助您更好地学习模式。一旦你理解了它,你就会更好地体会到像CaliburnMicro这样的框架的力量。给你。当然,这些框架将所有基本模板代码排除在外,但它们还可以添加高级绑定(bind)、操作和组合功能。我刚刚收听了对CaliburnMicro作者的播客采访。也

c# - 什么应该放入 AssemblyTrademarkAttribute 中?

VisualStudio默认为C#程序集生成这组属性:[assembly:AssemblyTitle("ContosoApp")][assembly:AssemblyDescription("Contoso'slatestgreatproduct.")]#ifDEBUG[assembly:AssemblyConfiguration("Debug")]#else[assembly:AssemblyConfiguration("Release")]#endif[assembly:AssemblyCompany("ContosoCorporation")][assembly:Assembly

c# - 一次性元素是否应该传入?

在一次代码审查中,一位同事更改了我的代码以将Stream作为参数传递。他说这是为了确保调用者清楚处置对象的责任。从某种意义上说,我可以同情。我希望对象创建者也负责清理。另一方面,这两种方法都使using的必要性变得更加清晰。我也更喜欢更简单的方法调用。拿publicstaticTextReaderSerialize(Tobj)whereT:new(){if(obj==null)thrownewArgumentNullException("obj");returnSerialize(obj,null);}对比publicstaticvoidSerialize(Tobj,TextWrite

c# - 我们应该把类、枚举和其他实体放到它们自己的文件中吗?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我和我们公司的teamlead\architect就这个话题进行了讨论。他认为,如果将“按逻辑连接的实体”放在一个cs文件中,则更容易理解大型项目。我引用:“逻辑和接口(interface)和类的整个结构可以在一个地方看到,这是一个无法反驳的论点。看到同样的东西但是一堆您需要使用工具、类图、用于导航的R#等的文件。”“根据糟糕的理论,我可能会尖叫说一大群分

c# - 我应该使用我的字符串字段的串联作为哈希码吗?

我在C#中有一个Address类,如下所示:publicclassAddress{publicstringStreetAddress{get;set;}publicstringRuralRoute{get;set;}publicstringCity{get;set;}publicstringProvince{get;set;}publicstringCountry{get;set;}publicstringPostalCode{get;set;}}我正在实现相等性,因此我需要覆盖哈希码。起初我打算使用EJ的哈希码公式,但后来我想:这些都是字符串字段,我不能只使用StringBuilde

C#:我应该抛出 ArgumentException 还是 DirectoryNotFoundException?

我有一个将目录路径作为字符串的方法。在该方法的开头,它检查此路径是否存在,如果不存在,则应抛出异常。我认为它可能应该抛出DirectoryNotFoundException或其他东西,而不是不太具体的ArgumentException。我阅读了那个DirectoryNotFoundException的msdn文档,它是这样说的DirectoryNotFoundExceptionusestheHRESULTCOR_E_DIRECTORYNOTFOUNDwhichhasthevalue0x80070003.我不知道这到底是什么意思,它看起来有点吓人……我应该仍然抛出那个异常,还是应该坚持使