Tag: C#的

获取一个boost :: shared_ptr为此

我在我的代码中广泛使用boost:shared_ptr 。 实际上,在堆上分配的大部分对象都是由shared_ptr 。 不幸的是,这意味着我不能将this传递给任何需要shared_ptr函数。 考虑这个代码: void bar(boost::shared_ptr<Foo> pFoo) { … } void Foo::someFunction() { bar(this); } 这里有两个问题。 首先,这不会编译,因为shared_ptr的T *构造函数是显式的。 其次,如果我强制它与bar(boost::shared_ptr<Foo>(this))我将创build第二个共享指针到我的对象,最终将导致双删除。 这使我想到了我的问题:是否有任何标准模式获取您知道的现有共享指针的副本存在于这些对象之一的方法内? 使用侵入性的引用计数我唯一的select在这里?

存储我的程序使用的一组常量的最佳方法是什么?

我有我的程序使用的各种常量。 有些是string ,有些是int ,有些是double的。 什么是最好的方式来存储他们? 我不认为我想要一个枚举,因为数据不是全部相同的types,我想手动设置每个值。 我应该把它们都放在一个空的class级,还是有更好的办法?

我怎样才能从string表示获得genericstypes?

我有MyClass<T> 。 然后我有这个string s = "MyClass<AnotherClass>"; 。 我怎样才能从strings获取Type? 一种方法(丑陋的)是parsing出“<”和“>”,并做: Type acType = Type.GetType("AnotherClass"); Type whatIwant = typeof (MyClass<>).MakeGenericType(acType); 但有没有一个更清晰的方式来获得最终的types没有任何parsing等?

如何在c#中asynchronous调用任何方法

有人可以告诉我一小段代码演示如何在c#中asynchronous调用一个方法吗?

左垫printf与空格

使用printf时,如何在左边填充一个空格string? 例如,我想打印“Hello”,前面有40个空格。 另外,我想打印的string由多行组成。 我需要分别打印每一行吗? 编辑:只是要清楚,我想正好打印每行前40个空格。

为什么Decimal.Divide(int,int)工作,但不是(int / int)?

如何将两个32位整数作为(int / int)返回给我0 ,但如果我使用Decimal.Divide()我得到正确的答案? 我绝不是一个交stream的人。

我如何在C#中进行日志logging?

我想在我的应用程序中实现日志logging,但宁愿不使用任何外部框架,如log4net。 所以我想做一些像DOS的回应文件。 什么是最有效的方法呢? 有没有办法login未经处理的exceptionlogging而不使用外部框架?

为什么当= ==返回空值为真时,> =返回false?

我有两个inttypes的variables? (或者Nullable <int>,如果你愿意的话)。 我想对两个variables进行大于或等于(> =)的比较,但事实certificate,如果两个variables均为空,则返回false,而显然==运算符返回true。 有人可以向我解释为什么这是合乎逻辑的,因为> =运算符的语义定义包含单词“或”?

检查一个给定的types是一个枚举

我正在为Json.NET编写JsonConverter,它应该允许我将任何枚举转换为由[Description]属性定义的string值。 例如: public enum MyEnum { [Description("Sunday")] Sunday, [Description("Monday")] Monday, [Description("Tuesday")] Tuesday, [Description("Wednesday")] Wednesday, [Description("Thursday")] Thursday, [Description("Friday")] Friday, [Description("Saturday")] Saturday } 我已经有了支持myEnum.Description()的代码,它显然会返回它的string描述。 在JsonConverter实现中,有这样的方法: public override bool CanConvert(Type objectType) { } 我想弄清楚如何确定objectType是一个Enum并返回true,以便转换器知道它可以转换这个对象。 由于我有很多Enum的,我不能明确地检查每一个,所以我希望有一个更通用的方法来完成这个。

如果文件夹不存在,如何创build文件和任何文件夹?

想象我想创build(或覆盖)以下文件: – C:\Temp\Bar\Foo\Test.txt 使用File.Create(..)方法,这可以做到这一点。 但是,如果我没有任何一个以下文件夹(从上面的示例path) 温度 酒吧 富 那么我得到一个DirectoryNotFoundException抛出。 所以.. 给定一个path,我们如何recursion创build所有必要的文件夹来创build文件..对于该path? 如果Temp或Bar文件夹存在,但是Foo不…然后创build。 为了简单起见,我们假设没有安全问题 – 所有的权限都是好的,等等。