Tag: C#的

“删除这个”是否安全?

在我最初的基本testing中,这样做是完全安全的。 然而,它让我感到试图稍后在一个delete s的函数中操作this , this可能是一个运行时错误。 这是真的, delete this它通常是安全的吗? 还是只有某些情况下是安全的?

我如何将GridView.DataSource导出到数据表或数据集?

如何将GridView.DataSource导出到数据表或数据集?

什么是C11中有用的匿名结构和联合?

除此之外,C11增加了“匿名结构和联盟”。 我捅了一下,却找不到明确的解释,什么时候匿名结构和联合会是有用的。 我问,因为我不完全明白他们是什么。 我知道他们是结构或工会之后没有名字,但是我一直(不得不把?)视为一个错误,所以我只能设想一个命名结构的用法。

如何在ProgressBar上放置文本?

我已经在我的c#桌面应用程序中使用ProgressBar控制。我已经在一个线程中使用它,而不是在其中声明控件的线程。它工作正常。 现在我想知道如何我可以显示一些文本里面的进度条控制像“启动注册”etc.Also我想用它作为选框进度条。请帮助我。

我可以重新定义一个C ++macros,然后定义它?

我在我的代码中同时使用了JUCE库和一些Boost头文件。 Juce将“T”定义为一个macros(呻吟),Boost经常在其模板定义中使用“T”。 结果是,如果你在Boost头文件之前包含了JUCE头文件,预处理程序就会在Boost代码中扩展JUCEmacros,然后编译器就会失去希望。 在大多数情况下保持我的包含顺序并不困难,但是当你有一个JUCE类包含一些其他的类,并且链上的某个文件包含了Boost,并且它之前的任何文件需要一个JUCE包括你有麻烦。 我最初的希望在于解决这个问题 #undef T 之前任何包括提升。 但问题是,如果我不重新定义它,那么其他代码会感到困惑,“T”没有被声明。 然后我想,也许我可以这样做一些循环的#define技巧: // some includes up here #define ___T___ T #undef T // include boost headers here #define T ___T___ #undef ___T___ 丑,但我认为它可能工作。 可悲的是。 我在使用“T”作为macros的地方出现错误 '___T___' was not declared in this scope. 有没有办法使这两个库可靠地一起工作?

为什么编译器不允许std :: string内联合?

我想在Union中使用string。 如果我写如下 union U { int i; float f; string s; }; 编译器给出错误说U :: S有复制构造函数。 我读了一些其他的post来解决这个问题。 但我想知道为什么编译器不允许这个在第一位? 编辑:@KennyTM:在任何联盟,如果成员初始化其他人将有垃圾值,如果没有初始化所有将有垃圾值。 我认为,标签联盟只是为了从联盟获得有效的价值而提供一些安慰。 你的问题:你如何或编译器为上面的联合写一个复制构造函数没有额外的信息? sizeof(string)给出4个字节。 基于此,编译器可以比较其他成员的大小和分配最大的分配(在我们的例子中是4字节)。 内部string的长度不重要,因为它将被存储在一个单独的位置。 让string有任何长度。 所有联盟必须知道的是调用带有string参数的string类拷贝构造函数。 无论哪种方式,编译器在正常情况下都需要调用复制构造函数,即使string位于Union内部,也要遵循类似的方法。 所以我想编译器可以这样做,分配4个字节。 然后,如果任何string被分配给s,那么string类将使用它自己的分配器来处理该string的分配和复制。 所以没有内存损坏的机会。 在编译器开发的时候string是不存在的? 所以答案还不清楚。 在这个网站是一个新的合作伙伴,如果有什么不对,请原谅我。

错误:在绑定具有地址的套接字时,地址已经在使用,但端口号通过`netstat`显示

我试图绑定我的套接字(服务器套接字)端口号8000 。 它为我工作和做了这项工作。 在代码结束时,我也closures了套接字。 我再次运行我的代码的瞬间,它告诉我,该地址已被使用。 我打印了错误值strerror(errno);的含义strerror(errno); 看看我的代码在每个点上是否正常工作。 要检查端口是否空闲,我使用netstat检查了它,但是显示端口号8000是空闲的。 它发生在我身上很多次了。 每次我再等几秒钟,然后再开始工作。 我正在使用c语言。 那么他的操作系统对于这种行为的理由是什么呢? 几秒钟后,我运行代码,然后工作。 anirudh@anirudh-Aspire-5920:~/Desktop/testing$ sudo ./a.out Socket Creation: Success File open: Success Socket Bind: Address already in use Socket Listen: Address already in use ^C anirudh@anirudh-Aspire-5920:~/Desktop/testing$ sudo netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp […]

如何使用条件三元运算符在lambdas之间有条件地分配Func <>?

通常,使用条件运算符时,语法如下: int x = 6; int y = x == 6 ? 5 : 9; 没有什么特别的,挺直的。 现在,让我们尝试在将Lambda分配给Functypes时使用它。 让我解释: Func<Order, bool> predicate = id == null ? p => p.EmployeeID == null : p => p.EmployeeID == id; 这是相同的语法, 应该工作? 对? 由于某些原因,不。 编译器给出了这个不错的信息: 错误1无法确定条件expression式的types,因为“lambdaexpression式”和“lambdaexpression式”之间没有隐式转换 然后,我继续前进,改变语法,并以这种方式工作: Func<Order, bool> predicate = id == null ? predicate = p […]

可能std :: vector使用小缓冲区优化?

我今天在想我的同事是否可以实现std :: vector来利用小缓冲区优化。 通过查看C ++ 11草案,我在23.3.1p8阅读 对于非数组的标准容器types的容器a和b,expression式a.swap(b)应交换a和b的值,而不对每个容器元素调用任何移动,复制或交换操作。 起初似乎取消了小缓冲区优化,但是在as-if规则下,我们仍然可以为非类types进行小缓冲区优化(因为我们无法观察正在执行的副本)。 接下来的文字似乎更难以“愚弄” 每个在交换之前引用一个容器中的元素的迭代器应该在交换之后引用另一个容器中的相同元素。 这足以防止实施std :: vector的小缓冲区优化? 有没有其他的路障,或者最终是否有可能有SBO的std :: vector?

从Dns.GetHostEntry()获取IPv4地址

我在这里有一些代码在IPv4机器上很好,但是在我们的构build服务器(IPv6)上失败了。 简而言之: IPHostEntry ipHostEntry = Dns.GetHostEntry(string.Empty); GetHostEntry的文档说传入string.Empty将得到你本地主机的IPv4地址。 这是我想要的。 问题是它在我们的IPv6机器上返回string“:: 1:”,我相信它是IPv6地址。 从任何其他IPv4机器ping机器给出了一个很好的IPv4地址…并从自己做一个“ping -4机器名”给出正确的IPv4地址….但定期从它自己给出“:: 1:”。 我怎样才能从本身获得这台机器的IPv4?