Tag: C#的

现代C ++变得更stream行了吗?

当我6-7年前第一次学习C ++时,我所学到的基本上是“C with Classes”。 std::vector绝对是一个高级的话题,如果你真的想要,你可以学习一些东西。 当然没有人告诉我可以利用破坏者来帮助pipe理记忆。 今天,在我看来,我看到了RAII和SFINAE ,STL和Boost,以及现代C ++。 即使刚刚开始使用这种语言的人们,似乎也从第一天开始就教授这些概念。 我的问题是,这仅仅是因为我只看到了“最好的”,也就是这里所提到的问题,还有其他一些倾向于吸引初学者(gamedev.net)的编程站点,或者这是实际上代表的整个C ++社区? 现代C ++真的成为默认? 专家写的不是一些奇特的东西,而是变成“C ++的样子”? 或者我只是无法看到成千上万仍然学习“C类”的人,而不是使用std::vector编写自己的dynamic数组,并通过手动调用new / delete从顶层代码来进行内存pipe理? 就像我想要相信的那样,如果整个C ++社区在几年内演变得如此之快,这似乎是不可思议的。 你有什么经验和印象? (免责声明:对C ++不熟悉的人可能会误解标题,问C ++是否越来越受欢迎,这不是我的问题。“Modern C ++”是C ++中方言或编程风格的通用名称,以“ 现代C + +devise:应用generics编程和devise模式 “,我只是对这个与”旧C ++“感兴趣,所以不需要告诉我C ++的时间已经过去了,我们都应该使用Python;))

双打不能使用模数?

我有一个C ++程序(使用g ++编译)。 我试图将两个双打作为操作数模数函数,但我得到以下错误: 错误:types'double'和'double'的操作数无效到二进制'operator%' 代码如下: int main() { double x = 6.3; double y = 2; double z = x % y; }

运行时types的默认值

对于任何给定的types,我想知道它的默认值。 在C#中,有一个名为default的关键字 object obj = default(Decimal); 但我有一个types的实例(称为myType),如果我这样说, object obj = default(myType); 它不工作 有没有什么好办法呢? 我知道一个巨大的开关块可以工作,但这不是一个好的select。

我如何有枚举值的自定义string格式的枚举绑定combobox?

在后面的Enum ToString中 ,描述了一个方法使用自定义属性DescriptionAttribute如下所示: Enum HowNice { [Description("Really Nice")] ReallyNice, [Description("Kinda Nice")] SortOfNice, [Description("Not Nice At All")] NotNice } 然后,你调用GetDescription函数,使用如下语法: GetDescription<HowNice>(NotNice); // Returns "Not Nice At All" 但是,这并不能真正帮助我,因为我不能强制ComboBox调用GetDescription ,所以我只想用一个枚举的值填充ComboBox 。 我想要的有以下要求: 读取(HowNice)myComboBox.selectedItem将返回选定的值作为枚举值。 用户应该看到用户友好的显示string,而不仅仅是枚举值的名称。 因此,用户不会看到“ NotNice ”,而会看到“ Not Nice At All ”。 希望解决scheme只需要对现有枚举进行最less的代码更改。 显然,我可以为我创build的每个枚举实现一个新的类,并覆盖它的ToString() ,但是对于每个枚举来说这是很多工作,我宁愿避免这样做。 有任何想法吗? 哎呀,我甚至会抛出一个慷慨的拥抱 🙂

计划的“私人保护”C#访问修饰符的含义是什么?

作为CodePlex上的Roslyn文档的一部分,有一个称为语言function实现状态的页面,其中包含针对C#和VB的计划语言function。 我不能包裹头部的一个特点是private protected访问修饰符: private protected string GetId() { … } 还有一页C#语言devise笔记 ,它解释了许多新function,但不是这一个。 Eric Lippert在评论中表示 : 你的错误在于将修饰符视为越来越多的限制。 事实上,修饰语总是减less限制。 请记住,事情默认情况下是“私人的” 只有通过添加修饰符,你可以减less限制。 private protected是什么意思? 我什么时候可以使用它?

以毫秒的精度获取DateTime.Now

我怎样才能精确构造一个毫秒精度的实际时间的时间戳? 我需要像16.4.2013 9:48:00:123。 这可能吗? 我有一个应用程序,其中我每秒采样值10次,我需要在一个图表中显示它们。

你如何防止IDisposable传播到所有的类?

从这些简单的课程开始… 比方说,我有一个简单的类,如下所示: class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { bool tied = false; } 一辆Bus有一个Driver , Driver有两个Shoe ,每个Shoe都有一个Shoelace 。 所有非常愚蠢的。 将一个IDisposable对象添加到鞋带 后来我决定在Shoelace上的一些操作可能是multithreading的,所以我添加一个EventWaitHandle线程来进行通信。 所以Shoelace现在看起来像这样: class Shoelace { private AutoResetEvent […]

为什么是一个简单的循环优化时,极限是959而不是960?

考虑这个简单的循环: float f(float x[]) { float p = 1.0; for (int i = 0; i < 959; i++) p += 1; return p; } 如果使用-march=core-avx2 -Ofast编译gcc 7(快照)或clang(trunk), -march=core-avx2 -Ofast得到与之非常相似的内容。 .LCPI0_0: .long 1148190720 # float 960 f: # @f vmovss xmm0, dword ptr [rip + .LCPI0_0] # xmm0 = mem[0],zero,zero,zero ret 换句话说,它只是将答案设置为960而不循环。 但是,如果您将代码更改为: float f(float x[]) […]

ExpandoObject,DynamicObject和dynamic之间的区别

System.Dynamic.ExpandoObject , System.Dynamic.DynamicObject和dynamic之间有什么区别? 你在哪些情况下使用这些types?

函数名称在C#中的意义是什么?

我正在看一些代码,它有这样的说法: ~ConnectionManager() { Dispose(false); } 这个类实现了IDisposable接口,但我不知道这是否是用于代字号(〜)的部分。