Tag: C#的

C ++ Lambdas:“可变”和“引用捕获”之间的区别

在C ++中,你可以像这样声明lambdaexpression式: int x = 5; auto a = [=]() mutable { ++x; std::cout << x << '\n'; }; auto b = [&]() { ++x; std::cout << x << '\n'; }; 都让我修改x ,那有什么区别?

如何在Visual Studio 2013中打开SSRS(.rptproj)文件?

如何在Visual Studio 2013 Pro中打开.rptproj? 当我尝试打开最初在VS2008中创build的SSRS项目时,在VS2013中,我得到: Unsupported This version of Visual Studio is unable to open the following projects. The project types may not be installed or this version of Visual Studio may not support them. For more information on enabling these project types or otherwise migrating your assets, please see the details in the "Migration […]

什么是C ++ lambdaexpression式的生命周期?

(我已经读过C ++中lambda派生的隐式函子的生命周期了 ,它并没有回答这个问题。) 我明白,C ++ lambda语法只是用一个调用操作符和某个状态来创build一个匿名类的实例,而我理解该状态的生命周期需求(由是否通过引用的值捕获来决定)。 lambda对象本身的生命周期? 在下面的例子中,返回的std::function实例是否有用? std::function<int(int)> meta_add(int x) { auto add = [x](int y) { return x + y; }; return add; } 如果是,它是如何工作的 ? 这似乎有点太神奇了 – 我只能想象它通过std::function复制我的整个实例,这可能是非常沉重取决于我所捕获的 – 在过去,我已经使用std::function主要与裸函数指针,并复制这些很快。 从std::function的types擦除来看,它也有问题。

将元素插入地图的推荐方法

可能重复: 在STL地图中,使用map :: insert比[]更好吗? 我想知道,当我将元素插入到地图中时,推荐的方法是什么。 我是不是该 map[key] = value; 要么 map.insert(std::pair<key_type, value_type>(key, value)); 我做了以下快速testing: #include <map> #include <string> #include <iostream> class Food { public: Food(const std::string& name) : name(name) { std::cout << "constructor with string parameter" << std::endl; } Food(const Food& f) : name(f.name) { std::cout << "copy" << std::endl; } Food& operator=(const Food& f) […]

GNU编译器警告“类具有虚拟函数但非虚拟析构函数”

我已经在C ++中定义了一个接口,即只包含纯虚函数的类。 我想明确地禁止接口的用户通过指向接口的指针来删除对象,所以我为接口声明了一个受保护和非虚拟的析构函数,如下所示: class ITest{ public: virtual void doSomething() = 0; protected: ~ITest(){} }; void someFunction(ITest * test){ test->doSomething(); // ok // deleting object is not allowed // delete test; } GNU编译器给了我一个警告: 类“ITest”具有虚拟function但是非虚拟析构函数 一旦析构函数被保护,它有什么区别在虚拟或非虚拟? 你认为这个警告可以被安全地忽略或沉默吗?

asynchronous/等待架构

如果你在你的架构中使用async / await,那么是否有必要将asynchronous/等待调用“泡沫化”起来,效率不高,因为你基本上是为每一层创build一个新线程(asynchronous调用每个图层的asynchronous函数,还是不重要,只是取决于你的喜好? 我正在使用EF 6.0-alpha3,以便可以在EF中使用asynchronous方法。 我的存储库是这样的: public class EntityRepository<E> : IRepository<E> where E : class { public async virtual Task Save() { await context.SaveChangesAsync(); } } 现在我的业务层是这样的: public abstract class ApplicationBCBase<E> : IEntityBC<E> { public async virtual Task Save() { await repository.Save(); } } 然后,当然我的UI中的方法在调用时会遵循相同的模式。 这是: 必要 业绩不利 只是一个偏好问题 即使这不是在单独的图层/项目中使用,如果我在相同的类中调用嵌套的方法,同样的问题也适用: private async Task<string> Dosomething1() { […]

IDE的Linux上的C#开发?

我有什么select? 我在一年前尝试过MonoDevelop,但是它非常麻烦。 最新的版本是一个稳定的开发环境吗?

在Windows 8中生活的瓷砖如何?

我已经search了样本,开发者网站,入门和增强的bla bla页。 即使在Google上使用了一些search查询,我也无法在Windows 8中查看实时拼贴的任何信息。 如何在Windows 8中创build活动磁贴? 可以使用哪些语言? C#? XAML?

何时通过SortedDictionary <TKey,TValue>使用SortedList <TKey,TValue>?

这似乎是这个问题的重复,它询问“ SortedList和SortedDictionary有什么区别?” 不幸的是,答案只不过是引用MSDN文档(明确指出两者之间存在性能和内存使用差异),但实际上并没有回答这个问题。 事实上(所以这个问题没有得到相同的答案),根据MSDN: SortedList<TKey, TValue>generics类是一个O(log n)检索的二叉search树,其中n是字典中元素的数量。 在这里,它类似于SortedDictionary<TKey, TValue>generics类。 这两个类有相似的对象模型,都有O(log n)检索。 这两个类别在内存使用和插入和删除速度方面存在差异: SortedList<TKey, TValue>使用的内存less于SortedDictionary<TKey, TValue> 。 SortedDictionary<TKey, TValue>对未sorting的数据有更快的插入和删除操作,O(log n)与SortedList<TKey, TValue> O(n)相对。 如果列表从已sorting的数据一次全部填充,则SortedList<TKey, TValue>比SortedDictionary<TKey, TValue>快。 所以,显然这表明SortedList<TKey, TValue>是更好的select, 除非您需要更快地插入和删除未sorting数据的操作。 问题仍然存在,鉴于上面的信息是什么使用SortedDictionary<TKey, TValue>的实际(真实世界,商业案例等)原因? 根据性能信息,这意味着根本不需要有SortedDictionary<TKey, TValue> 。

我如何初始化派生类构造函数中的基类成员variables?

为什么我不能这样做? class A { public: int a, b; } class B : public A { B() : A(), a(0), b(0) { } }