Tag: C#的

.NET中快速而紧凑的对象序列化

我想使用对象序列化在Mono服务器和Silverlight客户端之间通过networking进行通信。 因为服务器将要托pipe多个实时游戏,所以序列化非常节省空间并且相当快。 我应该使用什么技术? BinaryFormatter为序列化的类(版本,文化,类名称,属性名称等)添加了大量的开销,这在此应用程序中是不需要的。 我能做些什么来提高这个空间的效率?

为什么私人领域是私人的types,而不是实例?

在C#(以及许多其他语言)中,访问相同types的其他实例的私有字段是完全合法的。 例如: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if(anotherFoo.aBool) … } } 由于C#规范 (3.5.1节,3.5.2节)规定私有字段的访问是一种types,而不是一个实例。 我一直在和一位同事讨论这个问题,我们试图想出一个这样的原因(而不是限制对同一个实例的访问)。 我们可以提出的最好的论点是平等检查,其中类可能想访问私人领域,以确定与另一个实例的平等。 还有其他的原因吗? 或者一些绝对意味着它必须这样或那样的工作的黄金理由是完全不可能的?

如何确定一个types是否实现了一个特定的通用接口types

假定以下types定义: public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {} 如何才能findtypesFoo是否实现通用接口IBar<T>只有损坏types可用?

倒数比倒数快吗?

我们的计算机科学老师曾经说过,由于某种原因,倒计数比计数更有效率。 例如,如果你需要使用一个FOR循环,并且循环索引没有被用到某处(比如在屏幕上打印一行N *),我的意思是这样的代码: for (i = N; i >= 0; i–) putchar('*'); 胜于: for (i = 0; i < N; i++) putchar('*'); 这是真的吗? 如果是这样,有谁知道为什么?

如何在C ++中创build一个随机字母数字string?

我想创build一个随机string,由字母数字字符组成。 我希望能够指定string的长度。 我如何在C ++中做到这一点?

如何从一个std :: map中检索所有的键(或值),并把它们放入一个向量?

这是我出来的可能的方式之一: struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map<int, int> m; vector<int> keys; // Retrieve all keys transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey()); // Dump all keys copy(keys.begin(), keys.end(), ostream_iterator<int>(cout, "\n")); 当然,我们也可以通过定义另一个函子RetrieveValues来从地图中检索所有的值。 有没有其他方法可以轻松实现? (我总是想知道为什么std :: map不包括我们这样做的成员函数。)

有没有替代混蛋注射? (通过默认的构造函数也是穷人的注入)

我通常很想在less数情况下使用“混蛋注射”。 当我有一个“适当的”dependency injection构造函数: public class ThingMaker { … public ThingMaker(IThingSource source){ _source = source; } 但是,对于我打算作为公共API (其他开发团队将使用的类)的类,我永远不会find一个更好的select,而不是写一个具有最可能需要的依赖性的默认“混蛋”构造函数: public ThingMaker() : this(new DefaultThingSource()) {} … } 这里明显的缺点是这会在DefaultThingSource上创build一个静态依赖关系; 理想情况下,不会有这样的依赖,消费者总是会注入他们想要的任何IThingSource。 但是,这太难使用了; 消费者希望创造一个ThingMaker并开始制作东西,然后在需要时再注入其他东西。 在我看来,这只剩下几个选项: 省略混蛋构造函数; 强迫ThingMaker的用户了解IThingSource,了解ThingMaker如何与IThingSource交互,查找或编写具体类,然后在构造函数调用中注入实例。 省略混蛋构造函数,并提供单独的工厂,容器或其他引导类/方法; 不知何故使消费者明白,他们不需要编写自己的IThingSource; 强迫ThingMaker的用户find并理解工厂或引导程序并使用它。 保持混蛋的构造函数,使消费者“新build”一个对象并运行,并应对DefaultThingSource上的可选静态依赖。 男孩,#3肯定看起来很有吸引力。 还有更好的select吗? #1或#2似乎不值得。

我怎样才能捕获一个CTRL-C事件? (C ++)

如何在C ++中捕获Ctrl + C事件?

从vector中提取子vector的最佳方法是什么?

假设我有一个大小为N的std::vector (我们称之为myVec )。 构造由元素X到Y的副本组成的新向量的最简单方法是什么?其中0 <= X <= Y <= N-1? 例如, myVec [100000]通过myVec [100999]中的一个大小为150000的向量。 如果这不能有效地完成一个向量,是否有另一个我应该使用的STL数据types呢?

在C中通过引用传递数组?

我怎样才能通过C引用的结构数组? 举个例子: struct Coordinate { int X; int Y; }; SomeMethod(Coordinate *Coordinates[]){ //Do Something with the array } int main(){ Coordinate Coordinates[10]; SomeMethod(&Coordinates); }