使用哪个版本的StringComparer

如果我想要一个不区分大小写的字符串键,那么在给定这些约束的情况下,我应该使用哪个版本的StringComparer: 字典中的键来自C#代码或仅用英语语言环境编写的配置文件(美国或英国) 该软件已国际化,将在不同的区域运行 我通常使用StringComparer.InvariantCultureIgnoreCase但不确定这是否是正确的情况。 这是示例代码: Dictionary stuff = new Dictionary(StringComparer.InvariantCultureIgnoreCase);

c#中基于文件系统的B + Tree实现

在c#(开源)中是否存在基于文件系统的B + Tree实现。 我找到了一些项目,但那些不是基于文件(磁盘)的实现。 我特意寻找基于文件系统的B + Trees。

如何在c#中创建音频频谱

我想用信号频谱在c#中制作一个音频播放器。 我在网上看到了一些关于如何制作播放器但却无法找到频谱示例的例子。 有人可以给我指点吗? http://www.codeproject.com/KB/directx/directshowmediaplayer.aspx http://www.codeproject.com/KB/directx/directshownet.aspx?fid=4377&select=2579548&fr=1#xx0xx

克隆整个对象图

使用此代码序列化对象时: public object Clone() { var serializer = new DataContractSerializer(GetType()); using (var ms = new System.IO.MemoryStream()) { serializer.WriteObject(ms, this); ms.Position = 0; return serializer.ReadObject(ms); } } 我注意到它没有复制关系。 有没有办法让这种情况发生?

如何获取报告服务实例上可用的报告列表

我试图用c#枚举用户报告服务的报告。 我该怎么做呢? 是否有我应该使用的Web服务调用,或者我应该从http://localhost/ReportServer/lists.asmx返回html并将其分开? 第二个选项听起来有点像黑客。 当然有更好的方法吗?

线程同步。 完全锁定如何使内存访问“正确”?

首先,我知道lock{}是Monitor类的合成糖。 (哦, 语法糖) 我正在玩简单的multithreading问题,并发现无法完全理解锁定一些任意WORD的内存如何保护整个其他内存不被缓存的寄存器/ CPU缓存等。使用代码示例来解释我所说的内容更容易: for (int i = 0; i < 100 * 1000 * 1000; ++i) { ms_Sum += 1; } 最后, ms_Sum将包含100000000 ,这当然是预期的。 现在我们年龄将执行相同的周期,但在2个不同的线程上,上限减半。 for (int i = 0; i < 50 * 1000 * 1000; ++i) { ms_Sum += 1; } 由于没有同步,我们得到不正确的结果 – 在我的4核机器上,它是随机数近52 388 219 ,略大于100 000 000一半。 如果我们包含ms_Sum += […]

有没有更好的方法来计算C#中字符串中的字符串格式占位符?

我有一个模板字符串和一个来自不同来源的参数数组,但需要匹配以创建一个新的“填充”字符串: string templateString = GetTemplate(); // eg “Mr {0} has a {1}” string[] dataItems = GetDataItems(); // eg [“Jones”, “ceiling cat”} string resultingString = String.Format(templateString, dataItems); // eg “Mr Jones has a ceiling cat” 使用此代码,我假设模板中字符串格式占位符的数量将等于数据项的数量。 在我的情况下,这通常是一个公平的假设,但我希望能够生成一个resultString,即使假设是错误的也不会失败。 我不介意是否有空格来丢失数据。 如果dataItems中的dataItems太多,则String.Format方法可以很好地处理它。 如果还不够,我会得到一个例外。 为了解决这个问题,我计算了占位符的数量,并在没有足够的情况下向dataItems数组中添加新项。 为了计算占位符,我目前正在使用的代码是: private static int CountOccurrences(string haystack) { // Loop through all instances of the string […]

使用LINQ在字节数组中搜索以某个字节开始/停止的所有子数组

我正在处理COM端口应用程序,我们有一个定义的可变长度数据包结构,我正在与微控制器通信。 数据包具有开始和停止字节的分隔符。 麻烦的是,有时读缓冲区可能包含无关的字符。 看起来我总是得到整个数据包,只是在实际数据之前/之后的一些额外的喋喋不休。 所以我有一个缓冲区,只要从COM端口收到新数据,我就会附加数据。 搜索此缓冲区以查找可能出现的数据包的最佳方法是什么? 例如: 假设我的数据包分隔符是0xFF ,我有一个数组 { 0x00, 0xFF, 0x02, 0xDA, 0xFF, 0x55, 0xFF, 0x04 } 如何创建一个函数/ LINQ-statment来返回以分隔符开头和结尾的所有子数组(几乎就像带有通配符的滑动相关器)? 该示例将返回以下3个数组: {0xFF, 0x02, 0xDA, 0xFF}, {0xFF, 0x55, 0xFF}, and {0xFF, 0x02, 0xDA, 0xFF, 0x55, 0xFF}

如何在项目中使用不同的文件以用于不同的构建配置 – Visual Studio C#.net

我有#.net winforms解决方案,我想创建两个不同的版本:一个支持IE6,另一个支持IE7。 我的一个项目中的一些文件对于IE6构建与IE7构建是不同的,所以当我为IE7构建IE6时构建IE6和IE7文件时,我想要包含IE6文件。 在这种情况下构建解决方案的最佳方法是什么? 由于其他约束,我不想创建包含共享项的单独程序集; 我希望项目编译为单个程序集’foo.dll’,无论我正在构建哪个构建。 我以为我可以创建两个单独的项目,编译为’foo.dll’,然后创建两个发布配置,并仅在相关配置中包含相关项目。 但是我需要在两个项目中包含IE6和IE7相同的文件,我无法看到如何在两个项目中使用文件的单个副本(当我添加现有项目时,它会创建一个副本项目目录)。 我正在使用SVN进行源代码控制,所以也许可以使用它来在文件夹之间进行“共享”,但怀疑这是最好的方式.. 注意:由于IE中的API差异,需要不同的构建,其细节与问题无关 – 只要相信我需要两个构建。

什么是.NET程序集中的Fusion

在Suzanne Cook的博客中有这样的描述: LoadFrom上下文:通常,如果用户为Fusion提供了一个用于查找程序集的路径(并且在Load上下文中找不到该路径上的程序集),那么它就在LoadFrom上下文中。 按路径加载有多种方法:LoadFrom(),CreateInstanceFrom(),ExecuteAssembly(),使用代码库通过interop加载程序集等。 我还发现了一篇关于它的MSDN文章,但我不确定Fusion Suzanne谈论的内容是否与此处相同: http : //msdn.microsoft.com/en-us/library/e74a18c4(v = vs.71) .aspx但它似乎是一个Log查看器,所以我理解Suzanne所说的是什么 Fusion是一种探测机制,它采用路径等,它探测Application Base, codeBase ,GAC等中的程序集,将它们加载到上下文中。 有人可以澄清一下吗?