Tag: C#的

C#使用System.Type作为通用参数

我有一个需要在数据库上查询的types(System.Type)的列表。 对于每种types,我需要调用下面的extensionmethod(这是LinqToNhibernate的一部分): Session.Linq<MyType>() 但是我没有MyType,但是我想用Type来代替。 我拥有的是: System.Type typeOne; 但我不能执行以下操作: Session.Linq<typeOne>() 我如何使用types作为通用参数?

在stream行的实现中,dynamic内存分配在C和C ++中是不同的?

就各自的语言标准而言,C只能通过malloc()系列提供dynamic内存分配,而在C ++中,最常见的分配forms是由::operator new()来执行的。 C风格的malloc也可以在C ++中使用,许多“宝贝的第一个分配器”的例子使用它作为它的核心分配function,但我很好奇当代编译器如何实现实际的生产运营商 – 新。 它只是一个围绕malloc()简单包装,或者由于与典型的C程序相比,典型的C ++程序存在相当不同的内存分配行为,所以它在本质上是不同的? [ 编辑:我认为主要区别通常描述如下:AC程序有更less,更大,更长期的分配,而C ++程序有很多,小,短期的分配。 如果这是错误的,可以随意join,但是听起来好像考虑到这一点会受益。] 对于像GCC这样的编译器来说,只需要一个单独的核心分配实现并且将其用于所有相关的语言就很容易,所以我想知道是否在细节上有差异,试图优化每种语言的结果分配性能。 更新:感谢所有伟大的答案! 它看起来像在GCC这完全由ptmalloc解决,MSVC也使用malloc的核心。 有谁知道MSVC-malloc是如何实现的?

如何通过引用或值来返回智能指针(shared_ptr)?

比方说,我有一个类返回一个shared_ptr的方法。 通过参考或价值回报可能有哪些好处和弊端? 两个可能的线索: 早期的物体破坏。 如果我通过(const)引用返回shared_ptr ,那么引用计数器不会增加,所以当我们在另一个上下文中(例如另一个线程)超出了范围时,我就有被删除的风险。 它是否正确? 如果环境是单线程的,那么这种情况是否也会发生呢? 成本。 传递价值当然不是免费的。 是否值得尽量避免? 谢谢大家。

无法在HttpResponseMessage标头上设置Content-Type标头?

我正在使用ASP.NET WebApi来创build一个RESTful API。 我在我的一个控制器中创build一个PUT方法,代码如下所示: public HttpResponseMessage Put(int idAssessment, int idCaseStudy, string value) { var response = Request.CreateResponse(); if (!response.Headers.Contains("Content-Type")) { response.Headers.Add("Content-Type", "text/plain"); } response.StatusCode = HttpStatusCode.OK; return response; } 当我通过AJAX的浏览器放到那个位置,它给了我这个例外: 错误的标题名称。 确保请求头与HttpRequestMessage一起使用,使用HttpResponseMessage响应头和使用HttpContent对象的内容头。 但是不是Content-Type一个完全有效的响应头? 为什么我得到这个exception?

DbContext和DataContext是一样的吗?

我正在按照Scott Gu的一个教程来引用一个名为DbContext的类。 我无法在框架4上的任何命名空间上find它,在我看来它已经从CT4 DbContext重命名为.net4 System.Data.Linq.DataContext。 我的假设是否正确?

C ++枚举中的最大值和最小值

有没有办法find一个枚举的最大和最小定义值在c + +?

以编程方式在C ++中以编程方式创build静态数组

我们可以在编译时定义一个静态数组,如下所示: const std::size_t size = 5; unsigned int list[size] = { 1, 2, 3, 4, 5 }; 问题1 – 是否可以通过使用各种元编程技术在编译时“编程”分配这些值? 问题2 – 假设数组中的所有值都是相同的,那么是否可以在编译时以编程的方式select性地赋值? 例如: const std::size_t size = 7; unsigned int list[size] = { 0, 0, 2, 3, 0, 0, 0 }; 欢迎使用C ++ 0x的解决scheme arrays可能相当大,几百个元素长 现在的数组将只包含PODtypes 也可以假定数组的大小将以静态编译时兼容的方式预先知道。 解决scheme必须在C ++ (没有脚本,没有macros,没有基于pp或代码生成器的解决scheme) 更新:格鲁吉亚Fritzsche的解决scheme是惊人的,需要一点工作,以编译MSVC和英特尔编译器,但仍然是一个非常有趣的方法来解决这个问题。

在修改的exception上使用`throw;`

我有一个函数foo可以抛出一个exception。 在另一个函数中,我调用foo但是如果抛出exception,我可以添加一些更多的细节。 (我宁愿不将这样的信息作为parameter passing给foo因为它不属于那个属性,因为这个函数的generics特性。) 所以我在调用者中这样做: try { foo(); } catch (bar& ex){ ex.addSomeMoreInformation(…); throw; } 会throw重新抛出修改的exception还是我需要使用throw ex; ? 后者大概会采取价值副本,所以我宁愿不这样做。 会throw一个有价值的副本吗? 我怀疑它不会。 (我知道我可以validation,但我担心绊倒一个未指定或未定义的结构,所以想知道肯定)。

Node.Js + Socket.IO vs SignalR vs C#WebSocket Server

我目前有一个用.Net编写的TCP服务器应用程序,它接收并向客户端提交消息。 我正在build设一个Web应用程序,所以需要通信层。 我已经build立了一个Node.JS + Socket.IO应用程序连接到我的TCP服务器,然后将通信推送到Web应用程序,一切正常。 我刚刚读到了有关SignalR的一个替代方法,将它保存在.Net堆栈中。 不过,我也发现我可以写一个C#WebSocket服务器, 这里是一个基本的演示 我认为这个基本的服务器是SignalR的,但显然有更多的function呢? 我试图决定的是,我只是追加我的当前TCP应用程序与一个WebSocket服务器,或者我走了一个单独的SignalR或Node.js路线? 出于兴趣SignalR应用程序如何运行,它是作为Windows服务,控制台应用程序还是IIS服务?

仿函数实际上比指向函数的速度快吗?

根据Scott Meyers的说法,C ++在C上的一个领域是函数对象比函数指针快。 他说这是因为函数对象是内联的,这会提高速度。 我有两个问题: 我们如何validation函数对象实际上是内联的呢? 我们可以在实践中validation这个吗? 函数对象的内联取决于我们使用的编译器,还是所有的编译器都像这样?