Tag: C#的

重载成员访问操作符 – >,。*(C ++)

我理解大多数运算符重载,除了成员访问运算符-> , .* , ->*等 特别是传递给这些运算符函数的是什么,应该返回什么? 操作符是如何工作的(如operator->(…) )是否知道被引用的成员? 可以知道吗? 它甚至需要知道吗? 最后,是否有需要考虑的常量因素? 例如,当重载类似operator[]东西时,通常你需要一个const和非const的版本。 成员访问操作符是否需要const和非const版本?

0是十进制文字还是八进制文字?

零总是零,所以没关系。 但在最近与朋友的讨论中,他说八进制文字今天几乎没有用。 然后它觉得我实际上几乎所有的整数字面值是八进制的,即0 。 根据C ++语法, 0是一个八进制文字吗? 标准说什么?

C#通过windows api从文件中获取缩略图

Windows资源pipe理器能够显示文件的缩略图。 这些缩略图由核心和第三方shell程序扩展提供。 我知道如何扩展shell来为Windows提供缩略图。 我想要做的是通过使用C#的shell从系统上的任何文件检索缩略图。 这可能吗? 基本上,我正在写一个自定义的文件浏览器,我想显示缩略图,并不可能parsing地球上的每个文件,使自己的缩略图。 澄清:许多答案似乎围绕网页缩略图,或缩放图像。 但那不是我想要的。 我想要的是要求Windows的这些文件types的缩略图表示:.DOC,.PDF,.3DM,.DWG …和mabye约十多个。 我不想自己parsing,渲染和缩略图,因为Windows已经知道如何。 我发布的代码实际上是可行的,也许可以简化并清理一下。

如何为我的课程提供交换function?

在STLalgorithm中启用swap的正确方法是什么? 1)会员swap 。 std::swap是否使用SFINAE技巧来使用成员swap 。 2)在相同的命名空间中独立swap 。 3)部分专业化的std::swap 。 4)以上全部。 谢谢。 编辑:看起来我没有清楚地说出我的问题。 基本上,我有一个模板类,我需要STLalgorithm使用我为这个类写的(高效)交换方法。

如何将整数转换为C中的string?

我试过这个例子: /* itoa example */ #include <stdio.h> #include <stdlib.h> int main () { int i; char buffer [33]; printf ("Enter a number: "); scanf ("%d",&i); itoa (i,buffer,10); printf ("decimal: %s\n",buffer); itoa (i,buffer,16); printf ("hexadecimal: %s\n",buffer); itoa (i,buffer,2); printf ("binary: %s\n",buffer); return 0; } 但是那里的例子不起作用(它说itoa不存在的function)

为什么C ++ 0x的lambda需要“可变”关键字来进行按值捕获,默认情况下?

简短的例子: #include <iostream> int main() { int n; [&](){n = 10;}(); // OK [=]() mutable {n = 20;}(); // OK // [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda std::cout << n << "\n"; // "10" } 问题:为什么我们需要mutable关键字? 与传统的parameter passing给命名函数完全不同。 背后的理由是什么? 我的印象是,按价值计算的全部重点是允许用户改变临时的 – 否则我几乎总是使用通过引用来获得更好的效果,不是吗? 任何启示? (我正在使用MSVC2010.AFAIK这应该是标准的)

DisplayNameAttribute的本地化

我正在寻找一种方法来本地化PropertyGrid中显示的属性名称。 该属性的名称可以使用DisplayNameAttribute属性“覆盖”。 不幸的是,属性不能有非常量expression式。 所以我不能使用强types的资源,如: class Foo { [DisplayAttribute(Resources.MyPropertyNameLocalized)] // do not compile string MyProperty {get; set;} } 我看了一下,发现一些build议从DisplayNameAttributeinheritance,以便能够使用资源。 我最终会得到如下的代码: class Foo { [MyLocalizedDisplayAttribute("MyPropertyNameLocalized")] // not strongly typed string MyProperty {get; set;} } 但是,我失去了强烈的types资源利益,这绝对不是一件好事。 然后我碰到DisplayNameResourceAttribute这可能是我正在寻找。 但它应该是在Microsoft.VisualStudio.Modeling.Design命名空间,我无法find我应该为这个命名空间添加什么参考。 有人知道是否有一个更好的方法来实现DisplayName本地化的更简单的方法? 或者如果有什么方法可以使用微软似乎用于Visual Studio的?

为什么地址零用于空指针?

在C(或C ++)中,如果指针的值为零,指针是特殊的:我build议在释放内存之后将指针设置为零,因为这意味着再次释放指针并不危险。 当我调用malloc的时候,如果它不能得到我的内存,它会返回一个零值的指针; 我一直使用if (p != 0)来确保传入的指针是有效的,等等。 但是由于内存寻址从0开始,不是0就像其他地址一样是有效地址吗? 如果是这种情况,怎么能用0来处理空指针呢? 为什么不是一个负数,而是null? 编辑: 一堆很好的答案。 我将总结一下自己心中所解释的答案,并希望如果我误解,社区会纠正我。 像编程中的其他所有东西一样,它是一个抽象。 只是一个常量,与地址0无关.C ++ 0x通过添加关键字nullptr强调这一点。 它甚至不是地址抽象,它是C标准指定的常量,编译器可以将其转换为其他数字,只要它确保它永远不等于“真实”地址,并且等于其他空指针(如果0不是为平台使用最好的价值。 如果它不是抽象的,那么早期就是这种情况,地址0被系统使用,并被程序员禁止。 我承认,我的负面数字build议是一个小狂野的头脑风暴。 对地址使用带符号的整数有点浪费,如果它意味着除了空指针(-1或任何)之外,值空间在正整数之间平均分配,使有效地址和负数被浪费。 如果任何数字总是可以用数据types来表示的话,那么它就是0(也可能是1),我认为一位整数是0或者1,如果是无符号的,或者只是有符号的位,如果是有符号的,会是[-2,1],但是你可以将0设为空,1是内存中唯一可访问的字节。 仍然有一些在我脑海中没有解决的问题。 堆栈溢出问题指向特定的固定地址的指针告诉我,即使0为空指针是一个抽象,其他指针值也不一定。 这导致我发布另一个堆栈溢出的问题, 我可曾想要访问地址零? 。

从空格字符input读取string?

我使用Ubuntu,我也使用Geany和CodeBlock作为我的IDE。 我想要做的是读一个string(如"Barack Obama" ),并把它放在一个variables: #include <stdio.h> int main(void) { char name[100]; printf("Enter your name: "); scanf("%s", name); printf("Your Name is: %s", name); return 0; } 输出: Enter your name: Barack Obama Your Name is: Barack 我怎样才能让程序读取全名?

匿名类的通用列表

在C#3.0中,您可以使用以下语法创build匿名类 var o = new { Id = 1, Name = "Foo" }; 有没有办法将这些匿名类添加到通用列表? 例: var o = new { Id = 1, Name = "Foo" }; var o1 = new { Id = 2, Name = "Bar" }; List<var> list = new List<var>(); list.Add(o); list.Add(o1); 另一个例子: List<var> list = new List<var>(); while (….) { […]