Tag: C#的

谁构build/devise了C ++的IOStreams,并且按照今天的标准来看,它还是会被认为是精心devise的?

首先,我似乎在征求主观意见,但那不是我所追求的。 我很想听到关于这个话题的一些有根据的论点。 为了对现代stream/序列化框架应该如何devise有所了解,我最近给了自己一本由Angelika Langer和Klaus Kreft编写的“ Standard C ++ IOStreams and Locales ”一书。 我认为,如果IOStreamsdevise不好,那么首先就不会把它变成C ++标准库。 在阅读了本书的各个部分之后,我开始怀疑IOStreams是否可以从整体架构的angular度与STL进行比较。 阅读例如对Alexander Stepanov(STL的“发明家”)的采访,了解STL的一些devise决策。 尤其令我惊讶的是 : 对于IOStreams的总体devise负责人似乎不得而知(我很想阅读关于这方面的一些背景信息 – 有没有人知道好的资源? 一旦你钻研了IOStreams的直接表面,例如,如果你想用你自己的类来扩展IOStreams,你会遇到一个相当模糊getloc混淆的成员函数名称的接口,比如getloc / imbue , uflow / underflow , snextc / sbumpc / sgetc / sgetn , sgetn / pptr / epptr (可能还有更糟糕的例子)。 这使得了解整个devise以及单个部件如何合作变得非常困难。 即使我上面提到的书也没有那么多帮助(恕我直言)。 因此我的问题是: 如果你必须根据今天的软件工程标准来判断(如果实际上有任何普遍的一致的话),那么C ++的IOSstream是否仍然被认为是精心devise的呢? (我不想从一般认为已经过时的东西中提高我的软件devise技能。)

新的DateTime()与默认(DateTime)

有没有理由select其中之一? DateTime myDate = new DateTime(); 要么 DateTime myDate = default(DateTime); 他们都是平等的1/1/0001 12:00:00 AM 。

通过string获取c#dynamic属性的值

我想访问一个string的dynamic c#属性的值: dynamic d = new { value1 = "some", value2 = "random", value3 = "value" }; 如果我只有“value2”作为string,我怎样才能得到d.value2(“random”)的值? 在JavaScript中,我可以做d [“value2”]来访问值(“随机”),但我不知道如何用c#和reflection做到这一点。 我最近来的是这样的: d.GetType().GetProperty("value2") …但我不知道如何从中得到实际的价值。 一如既往,感谢您的帮助!

types“string”必须是非空types,才能将其用作genericstypes或方法“System.Nullable <T>”中的参数T

为什么我得到错误“types'string'必须是一个不可为空的值types,以便将其用作通用types或方法'System.Nullable'中的参数'T'”? using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; using Universe; namespace Universe { public class clsdictionary { private string? m_Word = ""; private string? m_Meaning = ""; string? Word { get { return m_Word; } set { m_Word = value; } } string? Meaning { get { return m_Meaning; } set { […]

std :: string_view究竟如何比const std :: string&更快?

std::string_view使它成为C ++ 17,广泛推荐使用它来代替const std::string& 。 其中一个原因是性能。 有人可以解释如何确切地说, std::string_view是/将比const std::string&当用作参数types更快吗? (让我们假设在被调用者中没有任何副本)

为什么我不能在这样的名称空间中转发声明一个类?

class Namespace::Class; 为什么我必须这样做? namespace Namespace { class Class; } 使用VC ++ 8.0,编译器问题: 错误C2653:'名称空间':不是类或名称空间名称 我假设这里的问题是编译器无法判断Namespace是类还是名称空间? 但是,为什么这只是一个前向声明呢? 是否有另一种方法来转发声明在某些命名空间中定义的类? 上面的语法感觉就像我“重新打开”命名空间并扩展其定义。 如果Class没有在Namespace实际定义呢? 这会导致一些错误吗?

实际上是为什么重载&&和||的原因 不要短路?

运算符&&和||短路行为 是程序员的一个惊人的工具。 但为什么他们在重载时会失去这种行为? 我明白操作符只是函数的语法糖,但是bool的操作符有这种行为,为什么只能限制在这种单一的types呢? 这背后有没有技术推理?

对象初始值设定项和构造函数有什么区别?

这两者之间有什么区别,你会在“构造函数”上使用“对象初始值设定项”,反之亦然? 我正在使用C#,如果这很重要。 此外,是特定于C#或.NET的对象初始值设定项方法吗?

用哪种语言编写的C#编译器?

我查看了http://referencesource.microsoft.com/上的源代码,看起来所有的源代码都在C#中。 我还查看了新的C#编译器平台( Roslyn )的源代码,它也在C#中。 这怎么可能? 用C#编写C#语言编译器吗? 还是我错过了明显的东西? 如果C#编译器是用C#编写的,那么它是如何工作的?

Java的最终与C ++的const

Java for C ++程序员教程说(重点是我自己的): final关键字大致等于C ++中的const 在这方面“粗略”是什么意思? 他们不完全一样吗? 有什么区别?