Tag: C#的

在C ++中通过指针捕获exception

我发现有三种方法可以发现exception,有什么区别? 1)抓住价值; 2)参照; 3)抓住指针; 我只知道,通过值捕获将调用对象的两个副本,引用通过将调用一个。 那么如何通过指针捕捉? 何时使用指针捕获? 除了抛出一个对象之外,我可以抛出一个像这样的对象的指针吗? class A {} void f() { A *p = new A(); throw p; }

检测WebBrowser完整的页面加载

如何检测System.Windows.Forms.WebBrowser控件何时完成加载? 我尝试使用Navigate和DocumentCompleted事件,但在文档加载过程中,它们都被引发了几次。

如何检测MS-Office的安装版本?

有谁知道什么是检测哪个版本的Office安装最好的方法? 此外,如果有多个版本的Office安装,我想知道他们是什么版本。 如果我可以检测到已安装的Excel的特定版本,则可以获得奖励。

应该C#有多重inheritance?

我遇到了许多反对在C#中包含多重inheritance的论据,其中一些包括(除了哲学论据): 多inheritance过于复杂,往往含糊不清 这是不必要的,因为接口提供了类似 在界面不合适的情况下,构图是一个很好的替 我来自C ++背景,错过了多重inheritance的力量和优雅。 虽然它不适用于所有的软件devise,但有些情况很难否定它在接口,组合和类似的OO技术上的实用性。 是否排除了多重inheritance,认为开发者不够聪明,无法明智地使用它们,而且当它们出现时又不能解决复杂问题呢? 我个人会欢迎将多重inheritance引入到C#中(可能是C ##)。 附录 :我想知道从单一(或程序背景)与多重inheritance背景来的答复。 我经常发现没有多重inheritance经验的开发人员往往会默认为多重inheritance是不必要的,因为他们对这个范例没有任何经验。

克隆/深层复制.NET通用字典<string,T>的最佳方法是什么?

我有一个通用字典字典,我想本质上做一个克隆()的任何build议。

将n个命令与shell中的pipe道连接起来?

我试图在C中实现一个shell。我可以用一个简单的execvp()来执行简单的命令,但是其中一个要求是pipe理这样的命令:“ls -l | head | tail -4” '循环,只有一个'pipe()'语句redirect标准input和标准输出。 现在我有点失落了。 N =简单命令的数目(例子中的3个:ls,head,tail)命令=命令的结构列表,如下所示: commands[0].argv[0]: ls commands[0].argv[1]: -l commands[1].argv[0]: head commands[2].argv[0]: tail commands[2].argv[1]: -4 所以,我做了for循环,并开始redirect标准input和标准输出,以连接所有的命令与pipe道,但…我只是无知,为什么它不工作。 for (i=0; i < n; i++){ pipe(pipe); if(fork()==0){ // CHILD close(pipe[0]); close(1); dup(pipe[1]); close(pipe[1]); execvp(commands[i].argv[0], &commands[i].argv[0]); perror("ERROR: "); exit(-1); }else{ // FATHER close(pipe[1]); close(0); dup(pipe[0]); close(pipe[0]); } } 我想创build的是一个childed进程的“线”: [ls -l] —- pipe […]

string化 – 它是如何工作的?

我知道: #define foo 4 #define str(s) #s 用str(foo)写出来: "foo" ,因为stringify先执行文本扩展,但是这个: #define xstr(s) str(s) #define str(s) #s #define foo 4 用xstr(foo)写出: "4" 。 为什么? 这个过程涉及哪些步骤?

如何在LINQ中进行子查询

以下是我试图转换为LINQ的查询的示例: SELECT * FROM Users WHERE Users.lastname LIKE '%fra%' AND Users.Id IN ( SELECT UserId FROM CompanyRolesToUsers WHERE CompanyRoleId in (2,3,4) ) CompanyRolesToUsers和Users之间有FK关系,但它是多对多的关系, CompanyRolesToUsers是交接表。 我们已经build立了大部分网站,而且我们已经使用PredicateExtensions类构buildexpression式,从而完成大部分的过滤工作。 简单的filter的代码看起来像这样: if (!string.IsNullOrEmpty(TextBoxLastName.Text)) { predicateAnd = predicateAnd.And(c => c.LastName.Contains( TextBoxLastName.Text.Trim())); } e.Result = context.Users.Where(predicateAnd); 我试图在另一个表中添加一个谓词。 ( CompanyRolesToUsers ) 我想能够添加的东西是这样的: int[] selectedRoles = GetSelectedRoles(); if( selectedRoles.Length > 0 ) { //somehow […]

序列化私有成员数据

我试图序列化一个对象到XML,它有一些属性,其中一些是只读的。 public Guid Id { get; private set; } 我已经标记了类[Serializable],我已经实现了ISerializable接口。 下面是我用来序列化我的对象的代码。 public void SaveMyObject(MyObject obj) { XmlSerializer serializer = new XmlSerializer(typeof(MyObject)); TextWriter tw = new StreamWriter(_location); serializer.Serialize(tw, obj); tw.Close(); } 不幸的是,这条消息在第一行就掉了下来。 InvalidOperationException未处理:无法生成临时类(结果= 1)。 错误CS0200:属性或索引器“MyObject.Id”不能被分配给 – 它是只读的 如果我将Id属性设置为public,则可以正常工作。 有人可以告诉我,如果我正在做什么,或者至less如果可能的话?

检查浮点值是否等于0是否安全?

我知道你不能依赖于正常的双或十进制types值之间的平等,但我想知道如果0是一个特例。 虽然我可以理解0.00000000000001和0.00000000000002之间的不精确性,0本身似乎很难搞乱,因为它只是一无所获。 如果你什么都不准确,那不是什么了。 但是我不太了解这个话题,所以我不能说。 double x = 0.0; return (x == 0.0) ? true : false; 这将永远回报真实?