Tag: C#的

优雅地确定是否多个布尔值是“真”

我有一组五个布尔值。 如果不止一个是真的,我想要执行一个特定的function。 什么是你可以想到的最优雅的方式将允许我检查这个条件在一个单一的if()语句? 目标语言是C#,但我也对其他语言的解决scheme感兴趣(只要我们没有谈论具体的内置函数)。 一个有趣的select是将布尔值存储在一个字节中,进行右移,并与原始字节进行比较。 就像if(myByte && (myByte >> 1))但是这需要转换单独的布尔值为一个字节(通过bitArray?),似乎有点(双关语意)笨拙… 对不起,应该已经 if(myByte & (myByte – 1)) [/编辑] 注:这当然非常接近于经典的“人口计数”,“横向加法”或“汉明重量”编程问题 – 但不完全相同。 我不需要知道有多less位被设置,只有当它不止一个。 我的希望是有一个更简单的方法来实现这一点。

无法开始debugging。 启动项目无法启动。 VS2015

我在VS2015开始了一个新的控制台项目。 我只有这个代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SautinSoft; namespace PdfParser { class Program { static void Main(string[] args) { string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); SautinSoft.PdfFocus f = new PdfFocus(); f.OpenPdf(@"path:\abc.pdf"); if (f.PageCount > 0) f.ToExcel(@"path:\abc.xls"); } } } 当我尝试运行时,我得到这个: 无法开始debugging。 启动项目无法启动。 validation启动项目的debugging设置。 我怎样才能解决这个问题? 谢谢。

如何从C ++中的string获得文件扩展名

给定一个string"filename.conf" ,如何validation扩展部分? 我需要一个跨平台的解决scheme。

xperf WinDBG C#.NET 4.5.2应用程序 – 了解进程转储

在沉重的负载下,我们的应用程序正在使一个强大的服务器达到100%的CPU使用率。 读取进程转储,看看线程,其中一些是10分钟。 当使用CLRStack时,他们没有给我任何的洞察力。 !失控给了我: 0:030> !runaway User Mode Time Thread Time 53:2e804 0 days 0:10:04.703 30:31894 0 days 0:07:51.593 33:47100 0 days 0:07:24.890 42:11e54 0 days 0:06:45.875 35:35e18 0 days 0:06:07.578 41:54464 0 days 0:05:49.796 47:57700 0 days 0:05:45.000 44:3c2d4 0 days 0:05:44.265 32:3898c 0 days 0:05:43.593 50:54894 0 days 0:05:41.968 51:5bc58 0 days 0:05:40.921 […]

WebRTC AGC(自动增益控制)

我正在testingWebRTC AGC,但是我必须做一些错误的事情,因为信号只是未经修改而通过。 以下是我如何创build和初始化AGC: agcConfig.compressionGaindB = 9; agcConfig.limiterEnable = 1; agcConfig.targetLevelDbfs = 9; /* 9dB below full scale */ WebRtcAgc_Create(&agc); WebRtcAgc_Init(agc, minLevel, maxLevel, kAgcModeFixedDigital, 8000); WebRtcAgc_set_config(agc, agcConfig); 然后,对于每个10ms的示例块,我执行以下操作: WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning); 其中micLevelIn设置为0。 有人能告诉我我做错了什么吗? 我预计全面的正弦音调将被削弱到目标DBFS的水平; 和低级正弦波(即-30dBFS)将被放大以匹配目标DBFS级别。 但是,这不是我所看到的。

如何制作一个进程守护进程

我想了解如何使我的程序成为一个守护进程。所以我碰到的一些事情是一般来说,一个程序执行以下步骤来成为一个守护进程: 调用fork( ) 。 在父亲中,调用exit( ) 。 这可以确保原始父节点(守护进程的祖父节点)满足其子节点终止,节点守护进程的父节点不再运行,守护进程不是进程组节点。 最后一点是成功完成下一步的要求。 调用setsid( ) ,为守护进程提供一个新的进程组和会话,两者都以它作为领导者。 这也确保该过程没有关联的控制terminal(因为该过程刚创build了新的会话,并且不会分配一个)。 通过chdir( )将工作目录更改为根目录。 这是因为inheritance的工作目录可以在文件系统的任何地方。 守护进程倾向于在系统的正常运行时间内运行,并且您不希望保持某个随机目录处于打开状态,从而阻止pipe理员卸载包含该目录的文件系统。 closures所有文件描述符。 打开文件描述符0,1和2(标准input,标准输出和标准错误)并将其redirect到/dev/null 。 #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <linux/fs.h> int main (void) { pid_t pid; int i; /* create new process */ pid = fork ( ); if (pid == […]

为什么C#不能从这个看似简单明显的例子中推断出types

鉴于此代码: class C { C() { Test<string>(A); // fine Test((string a) => {}); // fine Test((Action<string>)A); // fine Test(A); // type arguments cannot be inferred from usage! } static void Test<T>(Action<T> a) { } void A(string _) { } } 编译器抱怨Test(A)不能把T看作string 。 这对我来说似乎是一个相当简单的例子,我发誓我在其他通用实用程序和扩展函数中依赖于我写的更复杂的推理。 我在这里错过了什么? 更新1:这是在C#4.0编译器中。 我在VS2010中发现了这个问题,上面的示例来自我在LINQPad 4中创build的一个最简单的情况。 更新2:添加一些更多的例子到什么工作的清单。

什么是expression树,你如何使用它们,为什么要使用它们?

我刚刚遇到了多次听到的expression树的概念。 我只是想了解一个expression树和它的目的是什么意思。 如果有人能指导我简单的解释和使用的样本,我会喜欢它。

可以使Unity一直不抛出SynchronizationLockException吗?

Unitydependency injection容器似乎是一个众所周知的问题,其中SynchronizedLifetimeManager通常会导致Monitor.Exit方法抛出一个SynchronizationLockException,然后被捕获并被忽略。 这对我来说是一个问题,因为我喜欢使用Visual Studio进行debugging,以打破任何抛出的exception,所以每当我的应用程序启动时,我都无故打断这个exception多次。 我怎样才能防止这个exception被抛出? 无论在networking上的其他地方提到这个问题,build议通常包括更改debugging器设置以忽略它。 这类似于去看医生,说:“医生,医生,当我举起arm时,我的arm会疼。”被告知:“好吧,停止抬高它。 我正在寻找一个解决scheme,停止exception被抛出首先。 在SetValue方法中发生exception,因为它假定GetValue将被首先调用,其中Monitor.Enter被调用。 但是,LifetimeStrategy和UnityDefaultBehaviorExtension类都定期调用SetValue而不调用GetValue。 我宁愿不必更改源代码并维护我自己的Unity版本,所以我希望有一个解决scheme,我可以在容器中添加一些扩展,策略或策略的组合,以确保终身pipe理器是一个SynchronizedLifetimeManager,GetValue总是在别的之前被调用。

更改值types的“this”variables

显然你可以在你的结构中的任何地方(但不是在类中)更改this值: struct Point { public Point(int x, int y) { this = new Point(); X = x; Y = y; } int X; int Y; } 我从来没有见过这个,也没有需要它。 为什么要这样做呢? 埃里克·利珀特提醒我们 ,一个特点必须是合理的实施。 多大的用例可以certificate这一点? 有没有任何情况下,这是非常宝贵的? 我找不到任何文件 1 。 另外,对于调用构造函数,已经有了一个更好的已知替代语法,所以这个特性有时是多余的: public Point(int x, int y) : this() { X = x; Y = y; } 我通过C#第4版在Jeffrey Richter的CLR中find了这个特性。 1)显然它是在C#规范 。