Tag: C#的

intXX_t和int_fastXX_t有什么区别?

我最近发现了标准最快types的存在,主要是int_fast32_t和int_fast64_t 。 我总是被告知,为了在主stream架构上正常使用,最好使用经典的int & long ,它应该总是适合处理器默认的读取能力,这样可以避免无用的数值转换。 在C99标准中,它在§7.18.1.3p2中说: “typedef名称int_fastN_t指定宽度至less为N的最快有符号整数types。typedef名称uint_fastN_t指定宽度至less为N的最快无符号整数types。 而且在§7.18.1.3p1中也有关于它的引用: “对于所有目的,指定types不保证是最快的;如果实现没有明确的select一种types的理由,它只会select一些符合签名和宽度要求的整数types。 我不清楚什么最快的真正意义。 我不明白什么时候应该使用这种types,什么时候不应该使用。 我在这个上搜了一下,发现一些开源 项目已经把它们的一些function改变了,但并不是全部。 他们并没有真正解释为什么他们改变了一部分代码,而只是代码的一部分。 你知道什么是int_fastXX_t 真的比经典的更快吗?

如何扩展/“预处理”C ++模板代码

为了正确地debuggingC ++中的复杂macros,我通常在其上运行预处理程序,以便准确地查看结果代码的外观。 有没有类似的方式来“预处理”模板代码?

为什么ConcurrentDictionary.TryRemove需要第二个输出参数?

我只想删除一个值..我不需要以后使用该variables。 为什么不包含第二个参数不需要的地方? 我真的不得不把它存储在一个临时的局部variables,不使用它,并有方法结束时垃圾收集器收集它? 似乎相当愚蠢.. 该函数: http : //msdn.microsoft.com/en-us/library/dd287129.aspx

genericstypes的默认值?

是否有可能做类似的事情? public class PriorityQueue<TValue, TPriority=int> where TPriority : IComparable (注意=int )? 在你build议之前,是的,我知道我可以添加另一行: public class PriorityQueue<TValue> : PriorityQueue<TValue, int> { } 但是我想知道是否有可能把它作为参数。

大量使用Meyer的build议来select非会员,非朋友的function?

一段时间以来,我一直在devise我的类接口是最小的,喜欢命名空间包装的非成员函数超过成员函数。 基本上遵循斯科特·迈耶的文章如何非成员函数改进封装的build议 。 在一些小规模的项目中,我一直这样做的效果很好,但是我想知道它在更大的范围内工作的效果如何。 是否有任何大的,广受好评的开源C ++项目,我可以看看,也许参考强烈遵循这个build议? 更新:感谢所有的input,但是我并不是真正对意见感兴趣,而是在更大的范围内发现它在实践中的工作情况。 尼克的答案在这方面是最接近的,但我希望能够看到代码。 任何forms的实践经验(积极的,消极的,实际的考虑等)的详细描述也是可以接受的。

在哪里定义基于任务的asynchronous方法的callback

在这个问题之后 ,我尝试使用TPL实现asynchronous方法,并尝试遵循TAP准则。 我希望我的asynchronous方法在完成时执行callback。 据我所知,有三种方法可以做到这一点。 1)在我的任务委托中手动callback public Task DoWorkAsync(DoWorkCompletedCallback completedCallback) { return Task.Factory.StartNew( { //do work //call callback manually completedCallback(); }); } 2)在任务委托中为任务分配callback public Task DoWorkAsync(DoWorkCompletedCallback completedCallback) { return Task.Factory.StartNew( { //do work } ).ContinueWith(completedCallback); //assign callback to Task } 3)将呼叫分配给主叫方的任务 public Task DoWorkAsync() { return Task.Factory.StartNew( { //do work }); } public void SomeClientCode() { […]

我可以将Visual Studio 2012 Express Edition用于商业用途吗?

我知道早期版本的Visual Studio Express(2010和2008)已经问过这个问题,但是我还没有find与Visual Studio Express 2012相同的具体答案。 我打算做一些小的纯C#应用程序,不包括任何其他第三方库。 这个问题谈到了2010版和VS 2012 RC,而不是稍后发布的Visual Studio Express 2012。 这个问题的答案提供了一个现在不存在的FAQ的链接。 它被redirect到一个页面,您可以下载最新的VS 2012.经过一番挖掘,我能够在这里find该页面的存档。 那么我再也不能确定它是否适用于VS2012 Express。 即使经过多次挖掘,我也无法findVS2012的任何FAQ部分。 接下来,我尝试从这里挖掘出Microsoft产品的最终用户许可条款,但是我找不到VS 2012 Express版本的许可条款。 我在这里查看了VS2012的许可白皮书。 在第26页中,它声明“Visual Studio Express可用于构build生产应用程序”,这意味着我们可以构build用于商业目的的应用程序/程序?

不同的是:accept-encoding是什么意思?

谷歌的网页速度插件告诉我: The following publicly cacheable, compressible resources should have a "Vary: Accept-Encoding" header: //some .js and .css files 我不明白这是什么意思。 我已经压缩这些文件,如下所示: if (encodings.Contains("gzip") || encodings == "*") { app.Response.Filter = new GZipStream(baseStream, CompressionMode.Compress); app.Response.AppendHeader("Content-Encoding", "gzip"); } 而这一切似乎工作。 为什么有Vary: Accept-Encoding必须Vary: Accept-Encoding ?

如果copy-list-initialization允许显式的构造函数,会出现什么问题?

在C ++标准§13.3.1.7[over.match.list]中,陈述如下: 在复制列表初始化中,如果selectexplicit构造函数,则初始化是不合格的。 这就是我们无法做到的原因,例如: struct foo { // explicit because it can be called with one argument explicit foo(std::string s, int x = 0); private: // … }; void f(foo x); f({ "answer", 42 }); (请注意,这里发生的不是一个转换 ,即使构造函数是“隐式的”也不会是一个,这是直接使用构造函数初始化一个foo对象,除了std::string ,没有转换这里。) 这对我来说似乎很好。 没有办法,隐式转换会咬我。 如果{ "answer", 42 }可以初始化别的东西,编译器就不会背叛我,做错了事情: struct bar { // explicit because it can be called with […]

如何从HttpRequestException获取StatusCode?

我可能在这里丢失了一些明显的东西 我正在使用HttpClient抛出包含StatusCode在消息string中的HttpRequestException 。 我怎样才能访问StatusCode ? 编辑 :更多信息,我急于写这个问题。 我正在使用HttpClient来访问我的WebApi项目中的另一个API。 是的,我知道我为什么要调用EnsureSuccessStatusCode() 。 我想传播下游的一些错误,如404和403。 我只想要使用自定义的ExceptionFilterAttribute一致地将HttpRequestException转换为HttpResponseException 。 不幸的是,除了消息之外, HttpRequestException不会携带任何额外的信息。 我希望能够以raw(int或enum)forms发现StatusCode 。 看起来我可以: 使用该信息切换状态码(bleh) 或创build我的版本EnsureSuccessStatusCode并抛出实际可用的exception。