Tag: C#的

什么是低于正常的浮点数?

isnormal()参考页面告诉: 确定给定的浮点数arg是否正常,即不是零,低于正常,无限,也不是NaN。 一个数字是零,无限或NaN清楚是什么意思。 但是它也说低于正常水平。 什么时候是一个数字低于正常?

载体在Arduino

我正在Arduino上制作一个“航点”的vector图。 每个航点都是一个物体。 Arduino显然需要为航点导航存储多个航点。 但不是将这些航点存储在标准的预编程数组中,用户将需要能够添加,移除航点并移动它们。 不幸的是,Arduino不提供一个vectortypes作为内置库。 我目前正在考虑两个select: 在像C ++“vector”的对象容器? 有人发布了一个通用库。 它不包含任何索引删除或移动操作。 但它确实包含一些内存pipe理策略。 过去我使用过malloc ,dealloc, calloc 。 但我根本不喜欢这个select,特别是在课堂上。 但是这是在我的senario更好的select? 哪一条是更好的路?

如何用unicode文件名打开std :: fstream(ofstream或ifstream)?

你不会想象使用Windows应用程序的C ++标准库打开一个文件是非常棘手的…但似乎是这样。 在这里Unicode是指UTF-8,但我可以转换为UTF-16或任何其他的,重点是从一个Unicode文件名获得一个ofstream实例。 在我开始自己的解决scheme之前,这里有一个首选路线吗? 特别是一个跨平台的?

是std :: vector <T>一个`用户定义的types`?

在当前标准草案的 17.6.4.2.1 / 1和17.6.4.2.1 / 2中,对用户注入namespace std专门化进行了限制。 除非另有说明,否则C ++程序的行为是未定义的,如果它将声明或定义添加到名称空间std或名称空间std中的名称空间。 只有当声明依赖于用户定义的types ,并且专业化符合原始模板的标准库要求并且没有明确禁止时,程序可以将任何标准库模板的模板专用化添加到名称空间std。 我无法find标准中用户定义types定义的词组。 我听说一个选项声称是一个不是std::is_fundamental types是一个用户定义的types ,在这种情况下, std::vector<int>将是一个用户定义的types 。 另一个答案是用户定义的types是用户定义的types 。 由于用户没有定义std::vector<int> ,而std::vector<int>不依赖于用户定义的任何types,所以std::vector<int>不是用户定义的types 。 这个影响的一个实际问题是“你可以为std::tuple<Ts…>注入一个std::hash的专门化到namespace std吗?能够这样做有点方便 – 另一种方法是创build另一个名称空间我们recursion地构build我们的std::tuple (也可能是std中没有hash支持的其他types)的hash ,当且仅当我们无法在那个名字空间中find散列时,我们才回退std 。 但是,如果这是合法的,那么如果标准为std::tuple添加了一个hash专门化到namespace std ,已经被专门化的代码将被破坏,创build一个不会在未来添加这样的专业化的理由。 虽然我正在谈论作为一个具体的例子std::vector<int> ,我想问是否std中定义的types是用户定义的types s。 第二个问题是,即使没有,也许std::tuple<int>在用户使用时变成了一个用户定义的types (这会变得很滑:如果std内的东西定义了std::tuple<int> ,那么会发生什么呢?你对std::tuple<Ts…>进行部分hash )。 目前在这个问题上有一个公开的缺陷 。

yield(){}块内部的return语句在执行之前进行处理

我写了我自己的自定义数据层来坚持一个特定的文件,我用自定义的DataContext模式抽象它。 这是基于.NET 2.0框架(给定目标服务器的限制),所以即使其中一些看起来像LINQ到SQL,它不是! 我刚刚实现了一个类似的数据模式。 看下面的例子,我不能解释的情况的例子。 为了获得动物的所有实例 – 我这样做,它工作正常 public static IEnumerable<Animal> GetAllAnimals() { AnimalDataContext dataContext = new AnimalDataContext(); return dataContext.GetAllAnimals(); } 并在下面的AnimalDataContext()中实现GetAllAnimals()方法 public IEnumerable<Animal> GetAllAnimals() { foreach (var animalName in AnimalXmlReader.GetNames()) { yield return GetAnimal(animalName); } } AnimalDataContext()实现了IDisposable,因为我在那里有一个XmlTextReader,我想确保它快速清理。 现在,如果我把这样的使用语句中的第一个调用 public static IEnumerable<Animal> GetAllAnimals() { using(AnimalDataContext dataContext = new AnimalDataContext()) { return dataContext.GetAllAnimals(); } } 并在AnimalDataContext.GetAllAnimals()方法的第一行放置一个断点,并在AnimalDataContext.Dispose()方法的第一行放置另一个断点,然后执行… […]

C ++函数注释的最佳实践

有没有公​​认的评论function的最佳做法? 我只知道doxygen风格,但它不是正式的C ++支持,就像Javadocs是Java的,所以只是想知道什么是最好的。

为什么这个包含rand()的C ++ 11代码比使用multithreading更慢?

我正在尝试新的C ++ 11线程,但是我的简单testing具有糟糕的多核性能。 作为一个简单的例子,这个程序加起来一些平方随机数。 #include <iostream> #include <thread> #include <vector> #include <cstdlib> #include <chrono> #include <cmath> double add_single(int N) { double sum=0; for (int i = 0; i < N; ++i){ sum+= sqrt(1.0*rand()/RAND_MAX); } return sum/N; } void add_multi(int N, double& result) { double sum=0; for (int i = 0; i < N; ++i){ sum+= […]

c#entity framework:正确使用库类中的DBContext类

我用来实现我的存储库类,你可以看到下面 public Class MyRepository { private MyDbContext _context; public MyRepository(MyDbContext context) { _context = context; } public Entity GetEntity(Guid id) { return _context.Entities.Find(id); } } 不过,我最近读了这篇文章,说这是一个不好的做法,有数据上下文作为您的存储库中的私有成员: http : //devproconnections.com/development/solving-net-scalability-problem 现在,理论上这篇文章是正确的:因为DbContext实现了IDisposable,所以最正确的实现是以下内容。 public Class MyRepository { public Entity GetEntity(Guid id) { using (MyDbContext context = new MyDBContext()) { return context.Entities.Find(id); } } } 然而,根据这个其他文章configurationDbContext将不是必需的: http ://blog.jongallant.com/2012/10/do-i-have-to-call-dispose-on-dbcontext.html 哪两条是正确的? […]

在C#中,++ i和i ++之间有任何性能差异吗?

使用类似的东西有没有任何性能差异 for(int i = 0; i < 10; i++) { … } 和 for(int i = 0; i < 10; ++i) { … } 或者编译器是否能够在function上等同的情况下以同样快的速度进行优化? 编辑:这是因为我和同事讨论过这个问题,而不是因为我认为它在任何实际意义上都是有用的优化。 这主要是学术。

我如何获得.NET垃圾积极收集?

我有一个用于image processing的应用程序,我发现自己通常分配4000×4000 ushort大小的数组,以及偶尔浮动等。 目前,.NET框架往往在这个应用程序中显然是随机的,几乎总是出现内存不足的错误。 32mb不是一个很大的声明,但是如果.NET将内存碎片化,那么很可能这种大的连续分配并不像预期的那样运行。 有没有办法告诉垃圾收集器更积极,或碎片整理内存(如果这是问题)? 我意识到有GC.Collect和GC.WaitForPendingFinalizers调用,我已经通过我的代码非常自由地撒了,但我仍然得到错误。 这可能是因为我调用了很多使用本机代码的dll例程,但我不确定。 我已经去了C ++代码,并确保我声明的任何内存我删除,但仍然得到这些C#崩溃,所以我很确定它不在那里。 我不知道C ++调用是否会干扰GC,使它留下内存,因为它曾经与本地调用交互 – 这是可能的吗? 如果是这样,我可以closures该function吗? 编辑:这是一些非常具体的代码,将导致崩溃。 根据这个SO问题 ,我不需要在这里处理BitmapSource对象。 这里是天真的版本,没有GC.Collect在里面。 它通常在撤消过程的迭代4到10中崩溃。 这段代码replace了一个空白的WPF项目中的构造函数,因为我使用的是WPF。 由于我在下面对@dthorpe的回答中所解释的局限性以及在这个SO问题中列出的要求, 所以我对bitmapsource做了些坏事。 public partial class Window1 : Window { public Window1() { InitializeComponent(); //Attempts to create an OOM crash //to do so, mimic minute croppings of an 'image' (ushort array), and then undoing the […]