你会为命名空间编写xml-doc吗?如果是的话,如何以及在哪里?
我想,如果有可能,可能是一个几乎空的文件,如下所示:
/// <summary>
/// This namespace contains stuff
/// </summary>
namespace Some.Namespace
{
}
Run Code Online (Sandbox Code Playgroud)
但那会有用吗?既然你......"声明",或者至少在所有其他文件中都使用了命名空间......如果你在同一个命名空间的其他地方写了一个xml文档,会发生什么?一个人会消失吗?或者他们会以某种方式合并?
在几乎所有具有菜单栏的应用程序中,一些项目后面都有省略号(...),有些则没有.是否有一个众所周知的约定,何时将省略号放在那里,何时不放?你什么时候做的?你做到了吗?
我看过各种windows应用程序,这就是我要来的:
省略
没有省略号
但是,似乎总是存在不符合此规则的菜单项.例如,Visual Studio中的帮助项(如何,搜索,索引)以及查找和替换(快速查找,在文件中查找,查找符号).
所以在考虑了一下后,我现在认为这可能是事情:
省略
没有省略号
你们有什么感想?
我的项目中有一个包含数据库设置的文件,我已将其设置为某些默认值.该文件由Mercurial跟踪并签入.由于此文件将使用不同的值编辑各种开发人员机器,有没有办法告诉Mercurial忽略对此文件的新更改?
我尝试将文件添加到.hgignore
文件中,但由于文件被跟踪,因此不会被忽略.这在其他情况下还不错,但我想知道我能在这里做些什么吗?
我一直都在想这个.如此多的应用程序设置都有一个解压缩的zip文件,其中有一堆文件,其中包括exe和msi.有什么不同?它们通常大小相同.我永远不确定要执行哪一个,有时我会执行exe,有时候执行msi,它通常适用于任何一个.但其中一个人做了另一个不做的事吗?如果没有,是不是浪费两个文件做同样的事情?特别是在考虑下载大小等时......
不确定这应该是在这里还是在ServerFault上,或者两者都不是,但我认为,因为开发人员通常是创建安装文件的人,所以开发人员可能知道为什么这就像是=)
方法返回一个序列,IEnumerable<T>
您现在想要检查它是否为空.你怎么建议这样做?我正在寻找良好的可读性和良好的性能.
第一种也是最明显的方法是检查计数是否大于零:
if(sequence.Count() == 0)
Run Code Online (Sandbox Code Playgroud)
具有良好的可读性,但性能可怕,因为它必须实际完成整个序列.
我有时使用的方法如下:
if(!sequence.Any())
Run Code Online (Sandbox Code Playgroud)
这并不是(据我所知)必须经历整个序列,但可读性有点倒退和尴尬.(读好了很多,如果我们检查的顺序是不是空的,虽然).
另一种选择是First
在try-catch中使用,如下所示:
try
{
sequence.First();
}
catch(InvalidOperationException)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
不是一个非常漂亮的解决方案,也可能更慢,因为它使用异常和东西.FirstOrDefault
当然可以通过使用来防止这种情况,但如果序列中的第一项实际上是默认值,则会出现大问题;)
那么,检查序列是否为空的任何其他方法?你经常使用哪一个?你建议使用哪一种?
注意:为了获得最佳的可读性,我可能会将上述一个片段放在IsEmpty
扩展方法中,但我仍然很好奇,因为我必须在该方法中做一些事情:p
我想创建一个方法,它将文件名作为a string
或a FileInfo
,如果文件存在,则将增加的数字添加到文件名.但是不能完全理解如何以一种好的方式做到这一点.
例如,如果我有这个FileInfo
var file = new FileInfo(@"C:\file.ext");
Run Code Online (Sandbox Code Playgroud)
我想的方法给我一个新的FileInfo与C:\文件1.ext如果\ file.ext:C 存在,C:\文件2.ext如果C:\文件1.ext存在等.像这样的东西:
public FileInfo MakeUnique(FileInfo fileInfo)
{
if(fileInfo == null)
throw new ArgumentNullException("fileInfo");
if(!fileInfo.Exists)
return fileInfo;
// Somehow construct new filename from the one we have, test it,
// then do it again if necessary.
}
Run Code Online (Sandbox Code Playgroud) 这些天我听到很多关于Sharepoint的讨论,但是我在通过所有企业和营销术语掌握它究竟是什么时遇到了问题.试一试动手似乎也太麻烦了(几个重型软件包你不能免费下载).
有人可以给出一个好的开发人员对开发人员描述Sharepoint的内容吗?我特别想知道Sharepoint开发人员通常会做些什么.
是否有可能找出两个表达式是否相同?
喜欢以下四个表达式:
Expression<Func<int, bool>> a = x => false;
Expression<Func<int, bool>> b = x => false;
Expression<Func<int, bool>> c = x => true;
Expression<Func<int, bool>> d = x => x == 5;
Run Code Online (Sandbox Code Playgroud)
那么,至少我们可以看到:
a == b
a != c
a != d
但我可以在我的代码中做任何事情来解决这个问题吗?
在msdn库中查看了它
Equals
:确定指定的Object是否等于当前Object
.(继承自Object
.)
我想这意味着至少Expression类没有覆盖equals方法成为Equatable?那你怎么做?或者我在这里要求太多了?:p
根据MSDN,散列函数必须具有以下属性:
如果两个对象比较相等,则每个对象的GetHashCode方法必须返回相同的值.但是,如果两个对象的比较不相等,则两个对象的GetHashCode方法不必返回不同的值.
只要没有对对象状态的修改来确定对象的Equals方法的返回值,对象的GetHashCode方法必须始终返回相同的哈希代码.请注意,这仅适用于当前应用程序的执行,并且如果再次运行应用程序,则可以返回不同的哈希代码.
为获得最佳性能,哈希函数必须为所有输入生成随机分布.
我一直在以下场景中找到自己:我创建了一个类,实现IEquatable<T>
并重写了object.Equals(object)
.MSDN声明:
重写Equals的类型也必须覆盖GetHashCode; 否则,Hashtable可能无法正常工作.
然后它通常会为我停止一点.因为,你如何正确覆盖object.GetHashCode()
?从来没有真正知道从哪里开始,这似乎是很多陷阱.
在StackOverflow中,有很多与GetHashCode重写相关的问题,但大多数问题似乎都是针对非常特殊的情况和具体问题.因此,我想在这里得到一个很好的汇编.概述与一般建议和指南.该做什么,不该做什么,常见的陷阱,从哪里开始,等等.
我希望它特别针对C#,但我认为它对其他.NET语言也有同样的作用(?).
我想也许最好的方法是每个主题创建一个答案,首先是快速简短的答案(如果可能的话,尽可能接近单行),然后可能会有更多信息,并以相关问题,讨论,博客文章等结束. ,如果有的话.然后,我可以创建一个帖子作为接受的答案(将其置于顶部),只需一个"目录".尽量保持简洁明了.而且不要只链接到其他问题和博客文章.尝试采用它们的本质,然后链接到源(特别是因为源可能会消失.另外,请尝试编辑和改进答案,而不是创建许多非常相似的答案.
我不是一个非常优秀的技术作家,但我至少会尝试格式化答案,使它们看起来很相似,创建目录等.我也会尝试在这里搜索一些相关的问题来回答部分问题.这些并且可能拉出我能管理的那些的本质.但由于我在这个主题上不是很稳定,所以我会尽量远离这个主题:p
c# ×5
.net ×1
conventions ×1
deployment ×1
equality ×1
expression ×1
filenames ×1
gethashcode ×1
gist ×1
github ×1
hashcode ×1
hgignore ×1
ienumerable ×1
installation ×1
linq ×1
menu ×1
mercurial ×1
namespaces ×1
sharepoint ×1
standards ×1
unique ×1