Tag: C#的

字典返回一个默认值,如果该键不存在

现在我发现自己在我的代码中经常使用当前的模式 var dictionary = new Dictionary<type, IList<othertype>>(); // Add stuff to dictionary var somethingElse = dictionary.ContainsKey(key) ? dictionary[key] : new List<othertype>(); // Do work with the somethingelse variable 或者有时候 var dictionary = new Dictionary<type, IList<othertype>>(); // Add stuff to dictionary IList<othertype> somethingElse; if(!dictionary.TryGetValue(key, out somethingElse) { somethingElse = new List<othertype>(); } 这两种方式都觉得很迂回。 我真正想要的是类似的东西 dictionary.GetValueOrDefault(key) 现在,我可以为字典类写一个扩展方法,但是我想我可能会丢失已经存在的东西。 […]

为什么默认的无参数构造函数在使用参数创build时会消失

在C#,C ++和Java中,当您创build一个带参数的构造函数时,默认的无参数构造函数就会消失。 我一直只是接受这个事实,但现在我开始想知道为什么。 这种行为的原因是什么? 这只是一个“安全措施/猜测”,说:“如果你已经创build了自己的构造函数,你可能不希望这个隐含的构造函数挂在”? 还是它有一个技术的原因,使编译器不可能添加一个你自己创build一个构造函数?

为什么枚举权限通常有0,1,2,4的值?

为什么人们总是使用枚举值如0,1,2,4,8而不是0, 1, 2, 3, 4 ? 这是否与位操作等有关? 我真的很感激如何正确使用这个小样本片段:) [Flags] public enum Permissions { None = 0, Read = 1, Write = 2, Delete = 4 }

在C中通过引用传递

如果C不支持通过引用传递一个variables,为什么这个工作? #include <stdio.h> void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } 产量 $ gcc -std = c99 test.c $ a.exe 我= 21

在启动另一个块之前等待直到两个asynchronous块被执行

在使用GCD时,我们希望等到两个asynchronous块被执行完成后再继续执行下一个步骤。 什么是最好的方法来做到这一点? 我们尝试了以下,但似乎并没有工作: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block1 }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block2 }); // wait until both the block1 and block2 are done before start block3 // how to do that? dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block3 });

lambda函数可以模板化吗?

在C ++ 11中,有没有办法模拟一个lambda函数? 或者它本身是太具体的模板? 我明白,我可以定义一个经典的模板类/函子,但问题更像是:该语言是否允许模板lambda函数?

C ++结构初始化

是否有可能在C ++中初始化结构如下所示 struct address { int street_no; char *street_name; char *city; char *prov; char *postal_code; }; address temp_address = { .city = "Hamilton", .prov = "Ontario" }; 这里和这里的链接提到只有在C中才可以使用这种风格。如果是这样,为什么在C ++中这是不可能的? 有没有任何基本的技术原因,为什么不用C ++实现,或者是不好的做法,使用这种风格。 我喜欢使用这种初始化方式,因为我的结构很大,这种风格给了我清晰的可读性赋值给哪个成员。 请与我分享,如果有其他的方式,我们可以达到相同的可读性。 在发布这个问题之前,我已经提到了以下链接 C / C ++ for AIX Cvariables的结构初始化 在C ++中使用标签的静态结构初始化 C ++ 11适当的结构初始化

LINQ – 左连接,分组和计数

假设我有这个SQL: SELECT p.ParentId, COUNT(c.ChildId) FROM ParentTable p LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId GROUP BY p.ParentId 我怎样才能把它转换成LINQ to SQL? 我被困在COUNT(c.ChildId)中,生成的SQL似乎总是输出COUNT(*)。 这是我到目前为止: from p in context.ParentTable join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1 from j2 in j1.DefaultIfEmpty() group j2 by p.ParentId into grouped select new { ParentId = grouped.Key, Count […]

.c vs .cc vs .cpp vs .hpp vs .h vs .cxx

可能重复: * .h或* .hpp用于您的类定义 正确的C ++代码文件扩展名? .cc vs .cpp 我曾经认为它曾经是这样的: .h文件是C和C ++的头文件,通常只包含声明。 .c文件是C源代码。 .cpp文件是C ++源代码(也可以是C源代码)。 那么像.hpp , .cc和.cxx这样的文件就出现了,我完全糊涂了…那些文件有什么不同? 你什么时候使用“新”的?

D是Java和C ++的可靠替代品吗?

D语言是否可以替代Java和C ++? 怎样才能成为一个可信的替代品? 我应该费心学习吗? 它应该传福音吗? 我所要问的主要原因是,几乎在这里新的C ++标准(C ++ 0x),对我来说很清楚,对于任何人来说,语言已经过去了,没有任何回报。 我知道C / C ++永远不会死,但是在某个时候我们需要继续前进。 即使COBOL有一天,Java在许多方面已经取消了C ++。 下一个是什么? D是否填满账单?