Tag: C#的

我应该在方法结束时停止秒表吗?

让我们想象一下,使用Stopwatch进行简单的测量 public void DoWork() { var timer = Stopwatch.StartNew(); // some hard work Logger.Log("Time elapsed: {0}", timer.Elapsed); timer.Stop(); // Do I need to call this? } 根据MSDN: 在典型的秒表scheme中,您调用Start方法, 然后最终调用Stop方法 ,然后使用Elapsed属性检查已用时间。 我不确定当我不再对timer实例感兴趣时是否应该调用这个方法。 我应该使用Stop方法“清除”吗? 编辑 请记住,Logger.Log(..) timer.Elapsed任何费用,因为timer.Elapsed是在logging器日志之前读取的。

传统Linux fork-exec中使用_exit()和exit()之间有什么区别?

我一直在试图弄清楚在Linux内部如何使用fork-exec机制。 一切都按照计划进行,直到一些网页开始混淆我。 据说一个subprocess应该严格使用_exit()而不是简单的exit()或者main()的正常返回。 据我所知,Linuxshellfork-execs每一个外部命令; 假设我上面说的是真的,结论是这些外部命令和Linux shell内部发生的任何其他执行都不能正常返回! 维基百科和其他一些网页声称,我们必须使用_exit()只是为了防止subprocess删除父的临时文件,而可能的双重刷新stdio缓冲区可能会发生。 虽然我理解前者,但是我没有线索,双缓冲区的刷新对Linux系统是有害的。 我花了整整一天的时间…感谢您的任何澄清。

是铸造一样东西转换?

在Jesse Liberty的Learning C#书中,他说:“一种types的对象可以被转换成另一种types的对象,这就是所谓的”铸造“。 如果您调查下面的代码生成的IL,您可以清楚地看到,铸造的分配与转换后的分配没有相同的作用。 在前者,你可以看到拳击/拆箱的发生; 在后者中,您可以看到对转换方法的调用。 我最终知道它可能只是一个愚蠢的语义上的差异 – 但是转换只是换一个词。 我不是故意的,但是我对这个人的直觉并不感兴趣 – 意见不在这里! 任何人都可以指出一个明确的参考,确认或否认,如果铸造和转换是同一件事情? object x; int y; x = 4; y = ( int )x; y = Convert.ToInt32( x ); 谢谢 RP 注意在Matt关于显性/隐性的评论之后添加的: 我不认为隐含/显式是差别。 在我发布的代码中,这两种情况都是明确的。 隐式转换是将short指定给int时发生的。 请注意Sklivvz: 我希望得到证实,我怀疑Jesse Liberty(通常是清晰明了的)语言的松散是正确的。 我认为杰西·利伯蒂(Jesse Liberty)的语言有点松散。 我明白,铸造路由在对象层次结构 – 即,你不能从一个整数转换为一个string,但你可以从自定义exception派生从System.Exception转换为System.Exception。 不过有趣的是,当你试图从一个int转换为一个string时,编译器告诉你它不能“转换”这个值。 也许杰西比我想的更正确!

Anders Hejlsberg的C#4.0 REPL

在Ander谈话的最后10分钟“ C#的未来”中,他展示了一个非常酷的C#Read-Eval-Print循环,这对于学习语言将是一个巨大的帮助。 几个.NET4相关的下载已经可用: Visual Studio 2010和.NET Framework 4.0 CTP , Visual Studio 2010和.NET Framework 4培训工具包 。 你知道这个REPL发生了什么吗? 它是隐藏在例子中的某个地方吗? 我知道关于单声道。 请,没有其他的解决scheme。

如何在ASP.NET MVC中做时区?

在我的网站上,我需要知道人们在什么时区,以便在正确的时间向他们显示信息。 我不太清楚在教程中要怎么做才能search什么。 我打算做的是:当用户来到我的网站时,他们将通过从下拉列表中select它来设置他们的时区。 我将它们的设置存储在我的数据库中,并用它来计算时间。 我不知道我需要什么。 什么应该是我的数据库时间存储? 我读的地方,它应该被存储为UTC。 我如何设置我的数据库来做到这一点? 另外,我将在一个共享的托pipe网站,所以它必须以一种方式,我可以做到这一点(也许通过webconfig?)。 接下来,我需要将所有时区列表作为HTML帮助程序或常规HTML。 我真的不想做一个。 然后,就像我说的,我需要一个教程来告诉我该怎么做。 我认为这是从那时起加减东西,但我可能是错的。

为什么memset需要一个int而不是char?

为什么memset将int作为第二个参数而不是char ,而wmemset需要wchar_t而不是long或long long类的东西?

如何使用doxygen编写C ++模板和模板元函数?

有没有关于如何使用DoxygenloggingC ++模板和模板元函数的指南? 例如: /// @brief metafunction for generation of a map of message types to /// their associated callbacks. /// @tparam Seq the list of message types template< class Seq > struct generate_callback_map { typedef typename mpl::transform< Seq , build_type_signature_pair< mpl::_1 > >::type vector_pair_type; typedef typename fusion::result_of::as_map< vector_pair_type >::type type; }; 到目前为止,我已经看到了以下build议: @tparam用于logging模板参数。 @arg替代模板参数的备选方法。 @brief用来描述元函数。 […]

C最小的散列函数?

我不能使用boost:hash,因为我必须坚持使用C,不能使用C ++。 但是,我需要散列大量(10K到100K)的令牌string(长度为5到40个字节),以便在其中search最快。 MD5,SHA1或任何长的散列函数似乎太重了一个简单的任务,我没有做密码学。 另外还有存储和计算成本。 所以我的问题是: 在大多数实际情况下,最简单的散列algorithm可以确保防冲突。 多less位用于散列值? 我正在开发32位系统。 Perl / Python中的哈希algorithm是否也使用32位哈希? 还是我必须跳到64? 关于通用脚本语言中散列表的实现:实现是否检查冲突,还是我可以完全避免该部分?

我怎么能有一个重载的构造函数调用默认的构造函数以及基础构造函数的重载?

也许我所说的问题不是正确的问题,因为我已经知道简短的答案是“你不能”。 情况 我有一个带有两个参数的重载构造函数的基类。 class Building { public BuildingType BuildingType { get; protected set; } public string Address { get; set; } public decimal Price { get; set; } public Building() { BuildingType = BuildingType.General; Address = "Unknown"; } public Building(string address, decimal price) : this() { Address = address; Price = price; } } 这个类正在使用一个枚举 […]

我真的需要为const对象实现用户提供的构造函数吗?

我有这个代码: class A { public: A() = default; private: int i = 1; }; int main() { const A a; return 0; } 它在g ++(见ideone )上编译得很好,但在clang ++上失败,出现错误: consttypes“const A”的对象的默认初始化需要用户提供的默认构造函数 我在LLVM bug跟踪器上报告了这个问题,并将其视为无效。 我认为试图说服铿锵的开发者绝对毫无意义。 另一方面,我看不出这种限制的原因。 任何人都可以build议,如果C ++ 11标准莫名其妙地暗示此代码是无效的? 或者我应该只是向g ++报告错误? 或者,也许在语言规则方面有足够的自由来处理这些代码?