小编Svi*_*ish的帖子

命名空间的XML文档

你会为命名空间编写xml-doc吗?如果是的话,如何以及在哪里?

我想,如果有可能,可能是一个几乎空的文件,如下所示:

/// <summary>
/// This namespace contains stuff
/// </summary>
namespace Some.Namespace
{

}
Run Code Online (Sandbox Code Playgroud)

但那会有用吗?既然你......"声明",或者至少在所有其他文件中都使用了命名空间......如果你在同一个命名空间的其他地方写了一个xml文档,会发生什么?一个人会消失吗?或者他们会以某种方式合并?

c# namespaces xml-documentation

52
推荐指数
3
解决办法
2万
查看次数

何时在菜单项后使用省略号

在几乎所有具有菜单栏的应用程序中,一些项目后面都有省略号(...),有些则没有.是否有一个众所周知的约定,何时将省略号放在那里,何时不放?你什么时候做的?你做到了吗?

我看过各种windows应用程序,这就是我要来的:

  • 省略

    • 打开表单的菜单项,需要用户输入才能执行某些操作(替换,转到,字体)
  • 没有省略号

    • 只做某事的菜单项(剪切,粘贴,退出,保存)
    • 菜单项打开不需要用户输入的表单(关于,检查更新)

但是,似乎总是存在不符合此规则的菜单项.例如,Visual Studio中的帮助项(如何,搜索,索引)以及查找和替换(快速查找,在文件中查找,查找符号).

所以在考虑了一下后,我现在认为这可能是事情:

  • 省略

    • 菜单项肯定会打开一个模态窗口.
  • 没有省略号

    • 用于打开非模态窗口的菜单项.
    • 没有打开任何窗口的菜单项.
    • 很可能无法打开模态窗口的菜单项(如"保存",如果之前没有保存过,则会打开模态窗口,或者其他类似的东西)

你们有什么感想?

standards user-interface menu conventions

51
推荐指数
1
解决办法
2万
查看次数

Mercurial:如何忽略对跟踪文件的更改

我的项目中有一个包含数据库设置的文件,我已将其设置为某些默认值.该文件由Mercurial跟踪并签入.由于此文件将使用不同的值编辑各种开发人员机器,有没有办法告诉Mercurial忽略对此文件的新更改?

我尝试将文件添加到.hgignore文件中,但由于文件被跟踪,因此不会被忽略.这在其他情况下还不错,但我想知道我能在这里做些什么吗?

version-control mercurial configuration-files hgignore

51
推荐指数
5
解决办法
2万
查看次数

如何删除GitHub上的要点?

有没有办法可以删除GitHub上的要点?早些时候创造了一个要点,但不再那么想要了.

gist github

48
推荐指数
1
解决办法
1万
查看次数

为什么这么多程序都有setup.exe和setup.msi?

我一直都在想这个.如此多的应用程序设置都有一个解压缩的zip文件,其中有一堆文件,其中包括exe和msi.有什么不同?它们通常大小相同.我永远不确定要执行哪一个,有时我会执行exe,有​​时候执行msi,它通常适用于任何一个.但其中一个人做了另一个不做的事吗?如果没有,是不是浪费两个文件做同样的事情?特别是在考虑下载大小等时......

不确定这应该是在这里还是在ServerFault上,或者两者都不是,但我认为,因为开发人员通常是创建安装文件的人,所以开发人员可能知道为什么这就像是=)

deployment installation

47
推荐指数
3
解决办法
7128
查看次数

建议检查序列是否为空的方法

方法返回一个序列,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

c# linq ienumerable

47
推荐指数
2
解决办法
3万
查看次数

C#:如何通过添加数字来创建唯一的文件名?

我想创建一个方法,它将文件名作为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)

c# filenames unique

45
推荐指数
5
解决办法
6万
查看次数

从开发人员的角度来看,什么是Sharepoint开发?

这些天我听到很多关于Sharepoint的讨论,但是我在通过所有企业和营销术语掌握它究竟是什么时遇到了问题.试一试动手似乎也太麻烦了(几个重型软件包你不能免费下载).

有人可以给出一个好的开发人员对开发人员描述Sharepoint的内容吗?我特别想知道Sharepoint开发人员通常会做些什么.

sharepoint

45
推荐指数
2
解决办法
7万
查看次数

如何检查两个Expression <Func <T,bool >>是否相同

是否有可能找出两个表达式是否相同?

喜欢以下四个表达式:

        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

c# expression equality

44
推荐指数
2
解决办法
2万
查看次数

关于如何正确覆盖object.GetHashCode()的一般建议和指南

根据MSDN,散列函数必须具有以下属性:

  1. 如果两个对象比较相等,则每个对象的GetHashCode方法必须返回相同的值.但是,如果两个对象的比较不相等,则两个对象的GetHashCode方法不必返回不同的值.

  2. 只要没有对对象状态的修改来确定对象的Equals方法的返回值,对象的GetHashCode方法必须始终返回相同的哈希代码.请注意,这仅适用于当前应用程序的执行,并且如果再次运行应用程序,则可以返回不同的哈希代码.

  3. 为获得最佳性能,哈希函数必须为所有输入生成随机分布.


我一直在以下场景中找到自己:我创建了一个类,实现IEquatable<T>并重写了object.Equals(object).MSDN声明:

重写Equals的类型也必须覆盖GetHashCode; 否则,Hashtable可能无法正常工作.

然后它通常会为我停止一点.因为,你如何正确覆盖object.GetHashCode()?从来没有真正知道从哪里开始,这似乎是很多陷阱.

在StackOverflow中,有很多与GetHashCode重写相关的问题,但大多数问题似乎都是针对非常特殊的情况和具体问题.因此,我想在这里得到一个很好的汇编.概述与一般建议和指南.该做什么,不该做什么,常见的陷阱,从哪里开始,等等.

我希望它特别针对C#,但我认为它对其他.NET语言也有同样的作用(?).


我想也许最好的方法是每个主题创建一个答案,首先是快速简短的答案(如果可能的话,尽可能接近单行),然后可能会有更多信息,并以相关问题,讨论,博客文章等结束. ,如果有的话.然后,我可以创建一个帖子作为接受的答案(将其置于顶部),只需一个"目录".尽量保持简洁明了.而且不要只链接到其他问题和博客文章.尝试采用它们的本质,然后链接到源(特别是因为源可能会消失.另外,请尝试编辑和改进答案,而不是创建许多非常相似的答案.

我不是一个非常优秀的技术作家,但我至少会尝试格式化答案,使它们看起来很相似,创建目录等.我也会尝试在这里搜索一些相关的问题来回答部分问题.这些并且可能拉出我能管理的那些的本质.但由于我在这个主题上不是很稳定,所以我会尽量远离这个主题:p

.net c# hashcode gethashcode

44
推荐指数
2
解决办法
6427
查看次数