Tag: C#的

在C#中重新抛出exception的正确方法是什么?

我有一个问题来源于我的合作伙伴,与我做的事情不一样。 这样做更好吗: try { … } catch (Exception ex) { … throw; } 或这个: try { … } catch (Exception ex) { … throw ex; } 他们做同样的事情吗? 这个比那个好吗?

C和C ++中工会的目的

早些时候我已经习惯使用工会了, 今天我看到这篇文章,并且知道这个代码,我感到震惊 union ARGB { uint32_t colour; struct componentsTag { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } components; } pixel; pixel.colour = 0xff040201; // ARGB::colour is the active member from now on // somewhere down the line, without any edit to pixel if(pixel.components.a) // accessing the non-active member ARGB::components 实际上是未定义的行为,即从最近写的一个工会成员读取,导致未定义的行为。 如果这不是工会的预期用法,那是什么? 有人可以详细解释吗? 更新: […]

“控件集合不能被修改,因为控件包含代码块”

我正在尝试创build一个简单的用户控件,它是一个滑块。 当我添加一个AjaxToolkit SliderExtender到用户控件,我得到这个(*&$#()@#错误: “/”应用程序中的服务器错误。 控件集合不能被修改,因为控件包含代码块(即“)。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的来源。 exception详细信息:System.Web.HttpException:控件集合不能被修改,因为控件包含代码块(即“)。 源错误: 在执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。 堆栈跟踪: [HttpException(0x80004005):控件集合无法修改,因为控件包含代码块(即“)。] System.Web.UI.ControlCollection.Add(Control child)+8677431 AjaxControlToolkit.ScriptObjectBuilder.RegisterCssReferences(Control control)in d:\ E \ AjaxTk-AjaxControlToolkit \ Release \ AjaxControlToolkit \ ExtenderBase \ ScriptObjectBuilder.cs:293在AjaxControlToolkit.ExtenderControlBase.OnLoad(EventArgs e) System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Control.LoadRecursive() +141 System.Web.UI.Control.LoadRecursive() +141 System.Web.UI.Control.LoadRecursive() +141 System.Web.UI.Control.LoadRecursive() +141 System.Web.UI.Control.LoadRecursive() +141 System.Web.UI.Control.LoadRecursive() +141 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+627 版本信息:Microsoft .NET Framework版本:2.0.50727.3074; ASP.NET版本:2.0.50727.3074 我已经尝试在用户控件中放置一个占位符,并以编程方式将占位符文本框和滑块扩展器添加到该位置,但仍然出现错误。 这里是简单的代码: <table cellpadding="0" cellspacing="0" style="width:100%"> […]

何时使用ref vs out

有一天有人问我,他们应该使用参数关键字out而不是ref 。 虽然我(我认为)了解ref和out关键字之间的区别( 之前已经提到过 ),最好的解释似乎是ref == in和out ,但是我应该总是这样(假设或代码)的例子是什么用掉out而不是ref 。 由于ref更一般,你为什么要out ? 这只是句法糖吗?

C#中的树数据结构

我正在寻找C#中的树或graphics数据结构,但我想没有提供一个。 使用C#2.0进行数据结构的广泛检查解释了一些原因。 有没有一个常用的提供这种function的便利库? 也许是通过战略模式来解决文章中提出的问题。 我感觉有点傻,实现我自己的树,就像我会实现我自己的ArrayList。 我只想要一个可以不平衡的通用树。 想想目录树。 C5看起来漂亮,但是他们的树结构似乎被实现为更适合于search的平衡红黑树,而不是代表节点的层次结构。

标准容器的复杂性保证是什么?

显然;-)标准容器提供了某种forms的保证。 什么types的保证和不同types的容器之间的差异究竟是什么? 从SGI网页 (关于STL )工作,我想出了这个: Container Types: ================ Container: Forward Container Reverse Container Random Access Container Sequence Front Insert Sequence Back Insert Sequence Associative Container Simple Associative Container Pair Associative Container Sorted Associative Container Multiple Associative Container Container Types mapped to Standard Containers ============================================= std::vector: Sequence Back Sequence Forward/Reverse/Random Container std::deque: Sequence Front/Back Sequence Forward/Reverse/Random […]

做{…} while(0) – 有什么好处?

可能重复: 为什么在C / C ++macros中有没有意义的do / while和if / else语句? 我已经看了十多年了。 我一直在想什么是好的。 因为我主要在#defines中看到它,所以我认为它适合于内部作用域variables声明和使用中断(而不是gotos)。 对其他东西有好处吗? 你用它吗?

使用C#进行URL编码

我有一个我为朋友开发的应用程序。 它发送一个POST请求到VB论坛软件,并logging下一个人(没有设置cookie或任何东西)。 一旦用户login,我创build一个variables,在本地机器上创build一个path。 C:\ tempfolder \日\用户名 问题是有些用户名正在抛出“非法字符”exception。 例如,如果我的用户名是mas|fenix它会抛出一个exception。 Path.Combine( _ Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData), _ DateTime.Now.ToString("ddMMyyhhmm") + "-" + form1.username) 我不想从string中删除它,但是在服务器上通过FTP创build一个带有用户名的文件夹。 这导致了我的第二个问题。 如果我在服务器上创build文件夹,我可以离开“非法字符”? 我只问这是因为服务器是基于Linux的,我不确定Linux是否接受它。 编辑:看来,URL编码不是我想要的..这是我想要做的: old username = mas|fenix new username = mas%xxfenix 其中%xx是ASCII值或任何其他可轻易识别字符的值。

为什么sizeof(x ++)不增加x?

以下是在dev c ++ windows中编译的代码: #include <stdio.h> int main() { int x = 5; printf("%d and ", sizeof(x++)); // note 1 printf("%d\n", x); // note 2 return 0; } 执行注1后,我预计x是6。 但是,输出是: 4 and 5 任何人都可以解释为什么在注1后x不增加?

什么时候应该在C ++中使用“朋友”?

我一直在阅读C ++常见问题解答 ,并对friend声明感到好奇。 我个人从来没有使用它,但我有兴趣探索的语言。 什么是使用friend的好例子? 再阅读一下FAQ,我喜欢<< >>操作符重载的概念,并将它们添加为这些类的一个朋友。 不过,我不知道这是如何不破坏封装。 什么时候这些exception能够保持在OOP的严格范围之内?