Tag: C#的

Convert.ChangeType并转换为枚举?

我从数据库中获得了一个Int16值,并且需要将其转换为枚举types。 不幸的是,这个代码层完全不了解对象,只知道通过reflection可以收集的东西。 因此,它最终会调用Convert.ChangeType失败,并产生无效的转换exception。 我发现我认为是一个臭的解决方法,就像这样: String name = Enum.GetName(destinationType, value); Object enumValue = Enum.Parse(destinationType, name, false); 有没有更好的方法,以便我不必通过这个string操作? 这是一个简短但完整的程序,如果有人需要实验,可以使用这个程序: using System; public class MyClass { public enum DummyEnum { Value0, Value1 } public static void Main() { Int16 value = 1; Type destinationType = typeof(DummyEnum); String name = Enum.GetName(destinationType, value); Object enumValue = Enum.Parse(destinationType, name, false); Console.WriteLine("" […]

仅标题库的好处

什么是只有头文件库的好处,你为什么要这样写反对将实现分为单独的文件?

不能等待asynchronouslambda

考虑到这一点, Task task = new Task (async () =>{ await TaskEx.Delay(1000); }); task.Start(); task.Wait(); 调用task.Wait()不会等待任务完成,并立即执行下一行,但如果将asynchronouslambdaexpression式包装到方法调用中,则代码将按预期工作。 private static async Task AwaitableMethod() { await TaskEx.Delay(1000); } 然后(根据svick评论更新) await AwaitableMethod();

snprintf()总是空终止?

snprintf总是空终止目标缓冲区? 换句话说,这是否足够: char dst[10]; snprintf(dst, sizeof (dst), "blah %s", somestr); 还是你必须这样做,如果somestr足够长? char dst[10]; somestr[sizeof (dst) – 1] = '\0'; snprintf(dst, sizeof (dst) – 1, "blah %s", somestr); 我对这个标准所说的和一些stream行的libc可能做的事情都不感兴趣,这不是标准的行为。

什么是分段错误(核心转储)?

我正在尝试在linux下编写一个C程序,它有sqrt的参数,下面是代码: #include<stdlib.h> #include<stdio.h> #include<math.h> int main(char *argv[]){ float k; printf("this is consumer\n"); k=(float)sqrt(atoi(argv[1])); printf("%s\n",k); return 0; } 在“shell>”提示符下input我的input后,gcc给了我下面的错误: Segmentation fault (core dumped)

我怎样才能以相同的方式sorting两个向量,只使用其中一个向量?

我怎样才能以相同的方式sorting两个向量,只使用其中一个向量? 例如,假设我有两个相同大小的向量: vector<MyObject> vectorA; vector<int> vectorB; 然后我使用一些比较函数对vectorA进行sorting。 该sorting重新sortingvectorA 。 我怎样才能有相同的重新sorting适用于vectorB ? 一个选项是创build一个结构体: struct ExampleStruct { MyObject mo; int i; }; 然后对包含vectorA和vectorB内容的vector进行sorting,将vectorB压缩成单个vector: // vectorC[i] is vectorA[i] and vectorB[i] combined vector<ExampleStruct> vectorC; 这似乎不是一个理想的解决scheme。 还有其他的select,特别是在C + + 11?

extern关键字是什么意思?

extern关键字是什么意思? 我在类似的函数声明前看到过 extern void DoFoo …

不注销事件处理程序是不好的?

如果我有一个只有less数事件处理程序注册的应用程序(并且在应用程序closures之前使用这些事件的对象不会被处理),我是否真的需要担心注销那些处理程序? 我能看到的唯一的理由是,如果事件被触发,你不需要关心(即你有多个处理程序注册到一个事件),可能会有一点额外的开销。 还有其他什么好的理由吗? 任何人遇到重大问题,因为他们没有取消注册事件?

什么是streambuf? 我如何使用它?

我想了解更多关于I / Ostream如何在C ++中工作,我真的很困惑什么时候使用。 什么是streambuf ? 什么时候使用streambuf ,与string , istream或vector ? (我已经知道最后三个了,但是不知道streambuf与他们的比较,如果是的话)。

在GCC的std :: put_time实现状态?

我试图编译这个使用GCC的示例程序 (testing版本4.5.1,4.6.3,4.8.4): #include <iostream> #include <iomanip> #include <ctime> #include <chrono> using std::chrono::system_clock; int main() { system_clock::time_point now = system_clock::now(); std::time_t now_c = system_clock::to_time_t( now – std::chrono::hours(24)); std::cout << "One day ago, the time was " << std::put_time(std::localtime(&now_c), "%F %T") << '\n'; } 但它告诉我: prog.cpp: In function 'int main()': prog.cpp:14:18: error: 'put_time' is not a member […]