Tag: C#的

使用GCC预编译头文件

任何人都可以获得使用GCC的预编译头文件? 我的尝试中没有运气,我还没有看到如何设置它的很好的例子。 我已经尝试了cygwin gcc 3.4.4并在Ubuntu上使用4.0。

与分隔符(.net)相反的String.Split

有没有办法做相反的.Net中的String.Split ? 也就是说,要将数组的所有元素与给定的分隔符结合起来。 以["a", "b", "c"]和"abc" (用" "分隔符)。 更新:我自己find答案。 这是String.Join方法。

GetType()返回从基类调用时派生最多的types吗?

GetType()返回从基类调用时派生最多的types吗? 例: public abstract class A { private Type GetInfo() { return System.Attribute.GetCustomAttributes(this.GetType()); } } public class B : A { //Fields here have some custom attributes added to them } 或者我应该只是做一个抽象的方法,派生类将不得不像以下实现? public abstract class A { protected abstract Type GetSubType(); private Type GetInfo() { return System.Attribute.GetCustomAttributes(GetSubType()); } } public class B : A { […]

在命令提示符下编译/执行C#源文件

如何从命令提示符窗口编译和执行.cs文件?

linq的let关键字比关键字更好吗?

我正在刷新LINQ,并试图理解let和使用into关键字之间的区别。 就我的理解而言,到目前为止, let关键字似乎比into关键字更好。 into关键字本质上允许在投影之后继续查询。 (只是想明确指出,我不是指组join。) 给定一个名称的数组,它允许执行以下操作: var intoQuery = from n in names select Regex.Replace(n, "[aeiou]", "") into noVowel where noVowel.Length > 2 select noVowel; 它将select的结果放到noVowelvariables中,然后允许引入附加的where , orderby和select子句。 一旦noVowelvariables被创build, nvariables不再可用。 另一方面, let关键字使用临时匿名types来允许您一次重用多个variables。 您可以执行以下操作: var letQuery = from n in names let noVowel = Regex.Replace(n, "[aeiou]", "") where noVowel.Length > 2 select noVowel; noVowel和nvariables都可以使用(尽pipe在这种情况下我没有使用它)。 虽然我可以看到不同之处,但我不明白为什么要使用关键字let关键字,除非明确地要确保以前的variables不能在查询的后面部分中使用。 那么,为什么这两个关键词都存在是否有很好的理由?

opengl:glFlush()与glFinish()

我很难区分调用glFlush()和glFinish()之间的实际区别。 文档说glFlush()和glFinish()会把所有缓冲的操作都推送到OpenGL,这样可以确保所有的操作都会被执行,区别在于glFlush()立即返回glFinish()阻塞,直到所有的操作完成。 读过这些定义之后,我发现如果我使用glFlush() ,那么我可能会遇到向OpenGL提交更多操作的问题。 所以,试试看,我把glFinish()换成了glFlush() ,然后看,我的程序跑了(据我所知),完全一样; 帧率,资源使用情况,一切都是一样的。 所以我想知道这两个调用之间是否有很大差别,或者如果我的代码使它们运行没有什么不同。 或者应该使用哪一个而不是另一个。 我还想到OpenGL会有一些像glIsDone()这样的调用来检查glIsDone()所有缓冲命令是否完成(所以不会比OpenGL更快地发送操作),但是我找不到这样的function。 我的代码是典型的游戏循环: while (running) { process_stuff(); render_stuff(); }

抛出新的std ::exception与抛出std ::exception

而看着我偶然发现的一些代码: throw /*–>*/new std::exception ("//… 我一直认为你不需要/你不应该在这里使用new 。 什么是正确的方法,都是好的,如果有的话有什么区别? 顺便说一句,我可以看到,而与PowerShell提升库“擦除”永远不会使用throw new 。 PS还发现了一些使用throw gcnew CLI代码。 这可以吗?

Linux中的multithreading信号处理

在Linux中,当一个程序(可能有多个线程)接收到SIGTERM或SIGHUP信号时会发生什么? 哪个线程拦截信号? 多个线程可以得到相同的信号? 是否有一个专门处理信号的专用线程? 如果不是的话,在处理信号的线程中会发生什么? 信号处理程序完成后,执行过程如何恢复?

内存pipe理在Qt中?

我对Qt相当陌生,想知道一些基本的内存pipe理和对象的生活。 我什么时候需要删除和/或销毁我的对象? 这是否自动处理? 在下面的例子中,我创build了哪些对象,我需要删除? 当myClass被销毁时,实例variablesmyOtherClass会发生什么? 如果我不删除(或销毁)我的对象,会发生什么? 这会成为记忆问题吗? MyClass.h class MyClass { public: MyClass(); ~MyClass(); MyOtherClass *myOtherClass; }; MyClass.cpp MyClass::MyClass() { myOtherClass = new MyOtherClass(); MyOtherClass myOtherClass2; QString myString = "Hello"; } 正如你可以看到这是一个新手很容易的东西,但我在哪里可以轻松地了解这个?

在析构函数中的奇怪的枚举

目前,我正在阅读Protocol Buffer的源代码,我发现这里定义了一个奇怪的enum代码 ~scoped_ptr() { enum { type_must_be_complete = sizeof(C) }; delete ptr_; } void reset(C* p = NULL) { if (p != ptr_) { enum { type_must_be_complete = sizeof(C) }; delete ptr_; ptr_ = p; } } 为什么enum { type_must_be_complete = sizeof(C) }; 在这里定义? 它是干什么用的?