Tag: C#的

为什么要将types对象的dynamic转换为抛出空引用exception的对象?

我有以下function: public static T TryGetArrayValue<T>(object[] array_, int index_) { … //some checking goes up here not relevant to question dynamic boxed = array_[index_]; return (T)boxed; } 当我以下面的方式调用它时, object a = new object(); object v = TUtils.TryGetArrayValue<object>(new object[] { a }, 0); (T)boxed引发空引用exception。 除了“对象”之外,我还有其他types的东西,它工作的很好。 任何想法是什么,以及为什么抛出exception? 编辑:我使用dynamic的原因是在转换types时避免exception,例如: double a = 123; int v = TUtils.TryGetArrayValue<int>(new object[] { […]

我可以在向量中使用const来允许添加元素,但不能修改已经添加的元素吗?

我对这个答案的评论让我想到了常量和sorting的问题。 我玩了一下,减less了我的问题,这个代码: #include <vector> int main() { std::vector <const int> v; } 不会编译 – 你不能创build一个const int的向量。 显然,我应该知道这一点(在智力上我也是),但是我从来没有必要去创造这样的事情。 然而,对我来说,这似乎是一个有用的构造,我想知道是否有任何方法绕过这个问题 – 我想添加东西到一个vector(或其他),但不应该改变一旦添加。 可能有一些令人难堪的简单解决scheme,但这是我以前从未考虑过的事情。 我可能不应该提到sorting(我可能会问另一个问题,请参阅这个问题的困难)。 我真正的基本用例是这样的: vector <const int> v; // ok (ie I want it to be OK) v.push_back( 42 ); // ok int n = v[0]; // ok v[0] = 1; // not allowed

在重载决策algorithm中如何确定模糊度?

我想了解重载parsing方法。 为什么这是模棱两可的: void func(double, int, int, double) {} void func(int, double, double, double) {} void main() { func(1, 2, 3, 4); } 但这不是? void func(int, int, int, double) {} void func(int, double, double, double) {} void main() { func(1, 2, 3, 4); } 在第一种情况下,有2个确切的参数匹配和2个转换对1个完全匹配和3个转换,第二个情况下,有3个完全匹配和1个转换对1个完全匹配和3个转换。 那么为什么一个模棱两可,一个不是? 这里的逻辑是什么?

Mmap()整个大文件

我正在试图使用下面的代码(test.c)“mmap”一个二进制文件(〜8Gb)。 #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <sys/mman.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define handle_error(msg) \ do { perror(msg); exit(EXIT_FAILURE); } while (0) int main(int argc, char *argv[]) { const char *memblock; int fd; struct stat sb; fd = open(argv[1], O_RDONLY); fstat(fd, &sb); printf("Size: %lu\n", (uint64_t)sb.st_size); memblock = mmap(NULL, sb.st_size, PROT_WRITE, MAP_PRIVATE, fd, […]

不断从Visual Studio中获取“从工具包中加载工具箱内容”而IT需要付出!

有没有其他人有这个问题? 状态栏中的完整消息说, 从包“Microsoft.VisualStudio.IDE.ToolboxControlsInstaller.ToolboxInstallerPackage”中加载工具箱内容“{D766DAA8-F81E-4621-9184-F21C7F389796} 这通常发生在我打开一个xaml文件,而VS坐在那里,没有反应,约2分钟。

在genericstypes中使用'using alias = class'?

所以有时我只想从命名空间中包含一个类而不是整个命名空间,就像这里的例子,我使用using语句为该类创build一个别名: using System; using System.Text; using Array = System.Collections.ArrayList; 我经常用generics来做这件事,所以我不必重复这些论点: using LookupDictionary = System.Collections.Generic.Dictionary<string, int>; 现在我想用一个generics来完成同样的工作,同时把它作为一个generics来保存: using List<T> = System.Collections.Generic.List<T>; 但是,这不能编译,所以有什么办法来实现创build这个别名,而types为通用?

MVVM疯狂:命令

我喜欢MVVM。 我不喜欢它,但喜欢它。 大部分是有道理的。 但是,我一直在阅读鼓励您编写大量代码的文章,以便您可以编写XAML,而不必在代码隐藏中编写任何代码。 让我举一个例子。 最近我想在我的ViewModel中将一个命令连接到一个ListView的MouseDoubleClickEvent。 我不太确定如何做到这一点。 幸运的是,Google有一切的答案。 我发现了以下文章: http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events-in-wpf.html http://joyfulwpf.blogspot.com/2009/05/mvvm-invoking-command-on-attached-event.html http://sachabarber.net/?p=514 http://geekswithblogs.net/HouseOfBilz/archive/2009/08/27/adventures-in-mvvm-ndash-binding-commands-to-any-event.aspx http://marlongrech.wordpress.com/2008/12/13/attachedcommandbehavior-v2-aka-acb/ 虽然这些解决scheme对我对命令的理解很有帮助,但还是有问题的。 上述的一些解决scheme使得WPFdevise者无法使用,因为在依赖项属性之后添加了“内部” WPFdevise者找不到它,但是CLR可以。 一些解决scheme不允许多个命令到相同的控制。 一些解决scheme不允许参数。 经过几个小时的试验后,我决定这样做: private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { ListView lv = sender as ListView; MyViewModel vm = this.DataContext as MyViewModel; vm.DoSomethingCommand.Execute(lv.SelectedItem); } 那么,MVVM纯粹主义者,请告诉我这有什么问题? 我仍然可以unit testing我的命令。 这似乎很实用,但似乎违反了“ZOMG …你有代码在你的代码!!!!”的指导方针。 请分享你的想法。 提前致谢。

Application.Run()和Form.ShowDialog()有什么区别?

在我的应用程序中,我想先显示一个login表单,然后显示login成功的主窗体。 目前我正在做这样的事情: var A = new LoginForm(); if ( A.ShowDialog() == DialogResult.OK ) Application.Run(new MainForm()); 但后来我开始怀疑 – Application.Run()什么意义? 为什么不只是做(new MainForm()).ShowDialog()以及? 有什么不同? 什么是正确的方式来实现我想要的?

垃圾收集C ++库

什么免费和商业垃圾收集库可用于C + +,每个的优缺点是什么? 我感兴趣的是来自实际使用领域的难得的教训,而不是营销或促销活动。 没有必要详细说明与自动垃圾收集相关的常规权衡,但请务必提及使用的algorithm(引用计数,标记和扫描,增量等),并简要总结其后果。

WebClient + HTTPS问题

我目前正在与第三方创build的系统进行整合。 这个系统要求我使用XML / HTTPS发送一个请求。 第三方发给我的证书,我安装它 我使用下面的代码: using (WebClient client = new WebClient()) { client.Headers.Add(HttpRequestHeader.ContentType, "text/xml"); System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding(); var response = client.UploadData(address, "POST", encoding.GetBytes(msg)); } 此代码返回以下WebException : 底层连接已closures:无法build立SSL / TLS安全通道的信任关系。 更新由于这是一个testing服务器,我正在处理,证书不受信任,validation失败…要绕过此testing/debugging环境中创build一个新的ServerCertificateValidationCallback ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(bypassAllCertificateStuff); 这是我的“假”callback private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error) { return true; } 在这里和这里阅读更多