Tag: C#的

C ++地图访问丢弃限定符(const)

下面的代码说,将const作为const传递给operator[]方法会抛弃限定符: #include <iostream> #include <map> #include <string> using namespace std; class MapWrapper { public: const int &get_value(const int &key) const { return _map[key]; } private: map<int, int> _map; }; int main() { MapWrapper mw; cout << mw.get_value(42) << endl; return 0; } 这是因为地图访问中可能发生的分配? 没有函数的地图访问被声明为const? MapWrapper.cpp:10: error: passing 'const std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > […]

为什么!0是Microsoft中间语言(MSIL)的一种types?

在许多MSIL列表中,我观察到以下内容: System.Nullable`1<!0> etc … 要么 class !0 etc … 在这种情况下, !0的含义是什么?

结构有什么特别之处?

我知道在C中,我们不能从函数返回一个数组,而是一个指向数组的指针。 但是我想知道structs的特殊之处是什么使得它们可以通过函数返回,即使它们可能包含数组。 为什么struct包装使下面的程序有效? #include <stdio.h> struct data { char buf[256]; }; struct data Foo(const char *buf); int main(void) { struct data obj; obj = Foo("This is a sentence."); printf("%s\n", obj.buf); return 0; } struct data Foo(const char *buf) { struct data X; strcpy(X.buf, buf); return X; }

如何在WPF中居中标签文本?

如何在WPF中居中标签文本? Label HorizontalAlignment="Center" Content="What?" FontSize="25" FontWeight="Bold" Canvas.Top="5"

C ++中的私有虚拟方法

在C ++中创build一个私有方法的好处是什么? 我在一个开源的C ++项目中注意到了这一点: class HTMLDocument : public Document, public CachedResourceClient { private: virtual bool childAllowed(Node*); virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&); };

什么时候不应该使用虚拟析构函数?

有没有一个很好的理由不申报一个类的虚拟析构函数? 你应该什么时候专门避免写一个?

为什么在循环期间追加到TextBox.Text会在每次迭代中占用更多的内存?

简短的问题 我有一个循环,运行18万次。 在每次迭代结束时,应该将结果追加到实时更新的文本框中。 使用MyTextBox.Text += someValue导致应用程序吃了大量的内存,并且在几千条logging之后耗尽可用内存。 有一种更有效的方式将文本附加到TextBox.Text 180,000次? 编辑我真的不关心这个具体案件的结果,但是我想知道为什么这似乎是一个记忆猪,如果有一个更有效的方式将文本追加到一个文本框。 长(原始)问题 我有一个小应用程序,它读取一个CSV文件中的ID号列表,并为每一个生成一个PDF报告。 生成每个pdf文件后, ResultsTextBox.Text会附加上已处理的报告的ID号,并成功处理。 该进程在后台线程上运行,所以ResultsTextBox在项目被处理时被实时更新 我目前正在运行该应用程序对180,000个ID号码,但应用程序正在使用的内存随着时间的推移呈指数级增长。 它大约从90K开始,但是大约有3000个logging占据了大约250MB,而4000个logging占用了大约500MB的内存。 如果我注释掉结果文本框的更新,内存在大约90K的时候保持相对稳定,所以我可以假设写ResultsText.Text += someValue文本ResultsText.Text += someValue是什么导致它吃内存。 我的问题是,这是为什么? 将数据附加到不会占用内存的TextBox.Text的更好方法是什么? 我的代码如下所示: try { report.SetParameterValue("Id", id); report.ExportToDisk(ExportFormatType.PortableDocFormat, string.Format(@"{0}\{1}.pdf", new object[] { outputLocation, id})); // ResultsText.Text += string.Format("Exported {0}\r\n", id); } catch (Exception ex) { ErrorsText.Text += string.Format("Failed to export {0}: {1}\r\n", new object[] […]

什么时候应该在C中使用malloc,什么时候不使用?

我了解malloc()如何工作。 我的问题是,我会看到这样的事情: #define A_MEGABYTE (1024 * 1024) char *some_memory; size_t size_to_allocate = A_MEGABYTE; some_memory = (char *)malloc(size_to_allocate); sprintf(some_memory, "Hello World"); printf("%s\n", some_memory); free(some_memory); 为了简洁,我省略了错误检查。 我的问题是,你不能通过初始化一个指向内存中的静态存储的指针来完成上述操作吗? 也许: char *some_memory = "Hello World"; 你到底需要自己分配内存,而不是声明/初始化你需要保留的值?

索引(从零开始)必须大于或等于零

嘿,我不断收到一个错误: 索引(基于零)必须大于或等于零且小于参数列表的大小。 我的代码: OdbcCommand cmd = new OdbcCommand("SELECT FirstName, SecondName, Aboutme FROM User WHERE UserID=1", cn); OdbcDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Name.Text = String.Format("{0} {1}", reader.GetString(0), reader.GetString(1)); Aboutme.Text = String.Format("{2}", reader.GetString(0)); }

如何手动弃用成员

与Objective-C不同的是,Swift没有预处理器,那么是否仍然有办法手动弃用某个类的成员? 我正在寻找类似的东西: -(id)method __deprecated;