Tag: C#的

对于数组,为什么会出现 == 5 ?

正如Joel在C语言编程语言 (又名:K&R)中的Stack Overflow podcast#34中指出的那样,C: a[5] == 5[a] 乔尔说,这是因为指针算术,但我仍然不明白。 为什么a[5] == 5[a] ?

迭代器失效规则

什么是C ++容器的迭代器失效规则? 最好以摘要列表格式。 (注意:这是一个Stack Overflow的C ++常见问题解答的入口,如果你想批评在这个表单中提供FAQ的想法,那么在这个开始所有这些的meta上的贴子将是这个地方的答案。那个问题在C ++聊天室中进行监控,常见问题解决scheme首先出现,所以你的答案很可能会被那些提出这个想法的人阅读)。

深入克隆对象

我想做一些事情: MyObject myObj = GetMyObj(); // Create and fill a new object MyObject newObj = myObj.Clone(); 然后对未反映在原始对象中的新对象进行更改。 我不经常需要这个function,所以当需要的时候,我已经开始创build一个新的对象,然后单独地复制每个属性,但是总是让我觉得有一种更好或者更优雅的处理方式情况。 如何克隆或深度复制一个对象,以便可以修改克隆的对象,而不会在原始对象中反映任何更改?

char s 和char * s有什么区别?

在C中,可以这样做: char s[] = "hello"; 要么 char *s = "hello"; 所以我想知道有什么区别? 我想知道在编译时间和运行时间内存分配究竟发生了什么。

什么是移动语义?

我刚听完关于C ++ 0x的关于Scott Meyers的软件工程无线电播客采访 。 大部分新function对我来说都是有意义的,现在我对C ++ 0x兴奋不已,除了一个。 我仍然没有得到移动语义 …他们究竟是什么?

定义和声明有什么区别?

两者的意义都不见了。

如何正确清理Excel互操作对象?

我在C#中使用Excel互操作( ApplicationClass ),并在我的finally子句中放置了下面的代码: while (System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet) != 0) { } excelSheet = null; GC.Collect(); GC.WaitForPendingFinalizers(); 虽然这样的作品, Excel.exe进程仍然在后台,即使我closuresExcel。 只有在我的应用程序被手动closures时才会被释放。 我做错了什么,或者有没有其他办法来确保互操作对象被妥善处置?

为什么std :: getline()在格式化提取之后跳过input?

我有以下代码提示用户input他们的名字和状态: #include <iostream> #include <string> int main() { std::string name; std::string state; if (std::cin >> name && std::getline(std::cin, state)) { std::cout << "Your name is " << name << " and you live in " << state; } } 我发现这个名字已经被成功提取出来了,但是却没有成功。 这里是input和结果输出: Input: "John" "New Hampshire" Output: "Your name is John and you live in " […]

如何find'sizeof'(一个指向数组的指针)?

首先,这是一些代码: int main() { int days[] = {1,2,3,4,5}; int *ptr = days; printf("%u\n", sizeof(days)); printf("%u\n", sizeof(ptr)); return 0; } 有没有办法找出ptr指向的数组的大小(而不是只给它的大小,这是一个32位系统上的四个字节)?

跨线程操作无效:从其创build的线程以外的线程访问控制

我有一个场景。 (Windows窗体,C#,.NET) 有一个主要的forms,主持一些用户控制。 用户控件执行一些繁重的数据操作,如果我直接调用UserControl_Load方法,则UI在加载方法执行期间将不响应。 为了克服这个问题,我在不同的线程上加载数据(试图尽可能less地改变现有的代码) 我使用了一个后台工作线程,它将加载数据,完成后会通知应用程序它已经完成了它的工作。 现在来了一个真正的问题。 所有的UI(主表单及其子用户控件)都是在主主线程上创build的。 在usercontrol的LOAD方法中,我基于userControl上的某些控件(如文本框)的值来获取数据。 伪代码看起来像这样: 代码1 UserContrl1_LoadDataMethod() { if (textbox1.text == "MyName") // This gives exception { //Load data corresponding to "MyName". //Populate a globale variable List<string> which will be binded to grid at some later stage. } } 它给的例外是 跨线程操作无效:从其创build的线程以外的线程访问控制。 要知道更多关于这个我做了一些使用Googlesearch,并提出了一个像使用下面的代码的build议 代码2 UserContrl1_LoadDataMethod() { if (InvokeRequired) // Line #1 […]