Tag: C#的

std :: this_thread :: sleep_for()和GCC

当我尝试编译这个简单的程序时: #include<thread> void f() { std::this_thread::sleep_for(std::chrono::seconds(3)); } int main() { std::thread t(f); t.join(); } 在Ubuntu 10.04(32位)上使用gcc 4.4.3版本: $ g++ -std=c++0x -pthread a.cpp -oa 我得到: error: 'sleep_for' is not a member of 'std::this_thread' 我看着标题“线程”。 sleep_for()被_GLIBCXX_USE_NANOSLEEP保护 #ifdef _GLIBCXX_USE_NANOSLEEP … /// sleep_for template<typename _Rep, typename _Period> inline void sleep_for(const chrono::duration<_Rep, _Period>& __rtime) … 为什么_GLIBCXX_USE_NANOSLEEP没有定义? 我如何得到这个例子来编译? 更新2012年9月17日 (jogojapan):今天我遇到了同样的问题,使用GCC 4.7.1。 […]

在c#中显式释放内存

我创build了ac#应用程序,占用了150MB的内存(专用字节),主要是由于一个大字典: Dictionary<string, int> Txns = new Dictionary<string, int>(); 我想知道如何释放这个内存。 我试过这个: Txns = null; GC.Collect(); 但是,我的私人字节似乎并没有太大的影响 – 从155mb降到145mb。 任何线索? 谢谢 -编辑- 好吧,我有这个代码更多的运气(它获得私人字节下降到50MB),但为什么? Txns.Clear(); // <- makes all the difference Txns = null; GC.Collect(); -编辑- 对于那些说'不要使用GC.collect'的人来说,没关系(我不打算讨论这个问题,除了说你可以看到我的C背景通过),但是它并没有真正回答我的问题:为什么垃圾收集器只有在清除事务列表时才释放内存? 不pipe怎样,它不应该释放内存,因为字典已经取消了?

用于C ++的P2P库

是否有任何良好的跨平台C ++库的P2Pnetworking(最好是UDP,但TCP也可以)。 本来我打算使用libjingle,但由于他们没有提供任何预编译的库,并且运行一个相当混乱的构build系统,所以我现在把它放在一边太复杂了。

C#编译器的颜色颜色规则是否与consttypes成员错误?

好的,所以C#语言规范在Color Color规则中有一个特殊的部分(旧版本链接) ,其成员和types具有相同的名称。 着名的上师埃里克·利波特(Eric Lippert) 曾经对此进行了博客 。 我在这里要问的问题在某种意义上(而不是)与在线程循环定义中提到的常量枚举中的问题完全相同。 如果你喜欢,你可以去争取另一个问题。 现在我的问题。 考虑这个代码: namespace N { public enum Color { Green, Brown, Purple, } public class C1 { public const Color Color = Color.Brown; // error CS0110 – WHY? Compiler confused by Color Color? } public class C2 { public static readonly Color Color = Color.Brown; // […]

过时的属性导致属性被XmlSerialization忽略

我正在重构序列化为XML的一些对象,但需要保留一些属性的向后兼容性,我有一个方法,将旧对象转换为新的对象,并删除过时的属性。 我想使用Obsolete属性来告诉其他的开发者不要使用这个属性,但是这个属性被XmlSerializer忽略。 类似代码: [Serializable] public class MySerializableObject { private MyObject _oldObject; private MyObject _anotherOldObject; private MyObject _newBetterObject; [Obsolete("Use new properties in NewBetterObject to prevent duplication")] public MyObject OldObject { get { return _oldObject; } set { _oldObject = value; } } [Obsolete("Use new properties in NewBetterObject to prevent duplication")] public MyObject AnotherOldObject { get { […]

如何在C#中为generics类创build别名?

我如何在C#中执行以下操作? 写这段代码的第一行的正确方法是什么? using KVP<K, V> = System.Collections.Generic.KeyValuePair<K, V>; class C { KVP<int, string> x; }

运行期间,.NET任务实例能否超出范围?

如果我有一个方法中的代码块(使用.NET 4和任务并行库): var task = new Task(() => DoSomethingLongRunning()); task.Start(); 方法返回,这个任务是否会超出范围,被垃圾收集,还是会运行完成? 我还没有注意到GCing的任何问题,但是要确保我不会为GC的竞争状态而设置自己。

STLalgorithm的可组合性

STLalgorithm在C ++中是非常有用的。 但是有一件令我厌恶的事情是他们似乎缺乏组合性。 例如,假设我有一个vector<pair<int, int>>并且想要将其转换为仅包含对的second成员的vector<int> 。 这很简单: std::vector<std::pair<int, int>> values = GetValues(); std::vector<int> result; std::transform(values.begin(), values.end(), std::back_inserter(result), [] (std::pair<int, int> p) { return p.second; }); 或者,也许我想过滤只有那些first成员是偶数的vector 。 也很简单: std::vector<std::pair<int, int>> values = GetValues(); std::vector<std::pair<int, int>> result; std::copy_if(values.begin(), values.end(), std::back_inserter(result), [] (std::pair<int, int> p) { return (p.first % 2) == 0; }); 但是如果我想要这样做呢? 没有transform_ifalgorithm,使用transform和copy_if似乎需要分配一个临时vector来保存中间结果: std::vector<std::pair<int, int>> […]

将货币string转换为小数?

目的 对一组显示货币数据的stringsorting,例如$1,995.94数字forms显示在一组数据中。 码 我正在使用下面的代码示例将string值转换为decimal以便我可以正确地sorting。 if (sortBy == "checkAmount") { StringBuilder sb = new StringBuilder(); foreach (var c in Convert.ToString(p.GetType().GetProperty(sortBy).GetValue(p, null))) { if (!char.IsDigit(c) && c != '.') { continue; } sb.Append(c); } return Convert.ToDecimal(sb.ToString()); } else { return p.GetType().GetProperty(sortBy).GetValue(p, null); } 问题 什么是更好的方法呢? 它工作,这很酷,但它不是很优雅。 最终解决scheme Servy提供的答案按预期工作 ,我用了一段时间的实施,但一个同事,我发现一个更好的方式,所以我在这里logging。 顺便说一句,我最终使用这个解决scheme。 decimal.Parse(input, NumberStyles.AllowCurrencySymbol | NumberStyles.Number);

将vector追加到vector的最佳方法

std::vector<int> a; std::vector<int> b; std::vector<int> c; 我想通过将b和c的元素附加到b来连接这三个向量。 这是最好的方法,为什么? 1)通过使用vector::insert : a.reserve(a.size() + b.size() + c.size()); a.insert(a.end(), b.begin(), b.end()); a.insert(a.end(), c.begin(), c.end()); b.clear(); c.clear(); 2)通过使用std::copy : a.reserve(a.size() + b.size() + c.size()); std::copy(b.begin(), b.end(), std::inserter(a, a.end())); std::copy(c.begin(), c.end(), std::inserter(a, a.end())); b.clear(); c.clear(); 3)通过使用std::move (从C++11 ): a.reserve(a.size() + b.size() + c.size()); std::move(b.begin(), b.end(), std::inserter(a, a.end())); std::move(c.begin(), c.end(), std::inserter(a, […]