Tag: C#的

如果在使用语句中发生exception,该对象是否仍然被处置?

如果在使用语句中发生exception,该对象是否仍然被处置? 我之所以问,是因为我试图决定是否试图抓住整个代码块或内部使用语句。 考虑到某些例外情况正在重新devise的捕捞区内进行devise。 using (SPSite spSite = new SPSite(url)) { //Get the Web using (SPWeb spWeb = spSite.OpenWeb()) { // Exception occurs here } }

我从空std容器的front()得到什么?

如果front()返回一个引用,并且容器是空的,我会得到一个未定义的引用? 这是否意味着我需要在每个front()之前检查empty() front() ?

谁删除在“新”操作期间分配的内存,在构造函数中有exception?

我真的不敢相信我找不到明确的答案 如何释放在C ++类构造函数抛出exception后分配的内存,在使用new运算符初始化的情况下。 例如: class Blah { public: Blah() { throw "oops"; } }; void main() { Blah* b = NULL; try { b = new Blah(); } catch (…) { // What now? } } 当我尝试了这一点, b在catch块中是NULL(这是有道理的)。 在debugging的时候,我注意到conrol在进入构造函数前进入内存分配例程。 这在MSDN网站上似乎证实了这一点 : 当使用new为C ++类对象分配内存时,将在分配内存后调用该对象的构造函数。 所以,请记住,局部variablesb从来没有被分配(即在catch块中是NULL),你如何删除分配的内存? 在这个问题上得到一个跨平台的答案也是很好的。 即C ++规范说什么? 澄清:我不是在谈论这个类在c'tor中分配内存然后抛出的情况。 我明白,在这种情况下,决不会被召唤。 我正在讨论用于分配对象的内存(在我的例子中是Blah )。

标准c库是否提供链表等数据结构?

标准的C库实现,特别是glibc (GNU C库)提供链表,stack等。 数据结构,还是我们必须推出自己的? 谢谢。

从XmlDocument中删除节点

下面的代码应该find合适的项目标签并将其从XmlDocument中删除,但是当我testing它时,它说: 要删除的节点不是此节点的子节点。 有谁知道这样做的正确方法? public void DeleteProject (string projectName) { string ccConfigPath = ConfigurationManager.AppSettings["ConfigPath"]; XmlDocument configDoc = new XmlDocument(); configDoc.Load(ccConfigPath); XmlNodeList projectNodes = configDoc.GetElementsByTagName("project"); for (int i = 0; i < projectNodes.Count; i++) { if (projectNodes[i].Attributes["name"] != null) { if (projectName == projectNodes[i].Attributes["name"].InnerText) { configDoc.RemoveChild(projectNodes[i]); configDoc.Save(ccConfigPath); } } } } UPDATE 固定。 我做了两件事: XmlNode project = […]

5种平等检查方式.net ..为什么? 和哪个使用?

学习.net(通过C#)我发现了5种方法来检查对象之间的平等。 ReferenceEquals()方法。 虚拟Equals()方法。 (System.Object的) 静态Equals()方法。 从IEquatable接口的Equals方法。 比较运算符==。 我的问题是: 为什么有这么多的Equals()方法和比较运算符? 哪一个虚拟Equals()或IEquatable的Equals()sholud被使用..(说如果我们使用我们自己的集合类)

为什么malloc()和printf()表示为不可重入?

在UNIX系统中,我们知道malloc()是一个非重入函数(系统调用)。 这是为什么? 同样, printf()也被认为是不可重入的; 为什么? 我知道重入的定义,但我想知道为什么它适用于这些function。 什么阻止他们保证可重入?

IEnumerable和IEnumerable <T>之间的区别?

IEnumerable和IEnumerable<T>什么区别? 我见过很多实现这两个接口的框架类,所以我想知道通过实现这两个接口有什么好处? 请看看他们是如何定义的: public interface IEnumerable { [DispId(-4)] IEnumerator GetEnumerator(); } public interface IEnumerable<T> : IEnumerable { IEnumerator<T> GetEnumerator(); } 正如我们所看到的, IEnumerable<T>从IEnumerable派生,这意味着无论IEnumerable具有什么, IEnumerable<T>inheritance,那么为什么我们要实现而不仅仅是IEnumerable<T>呢? 正在实现IEnumerable<T>不够? 同样,还有其他类似的配对: IList和IList<T> ICollection和ICollection<T> 我也想知道这些。

是否有可能拦截控制台输出?

我调用了一个方法,比如FizzBuzz() ,我无法控制它。 这个方法使用Console.WriteLine输出一堆东西到控制台。 是否可以拦截由FizzBuzz方法生成的输出? 请注意我的应用程序本身就是一个控制台应用

如何将expression式树转换为部分SQL查询?

当EF或LINQ to SQL运行查询时,它: 从代码构buildexpression式树, 将expression式树转换为SQL查询, 执行查询,从数据库获取原始结果并将其转换为应用程序使用的结果。 看着堆栈跟踪,我不知道第二部分发生在哪里。 一般来说,是否可以使用EF或(最好是)LINQ to SQL的一个现有部分将Expression对象转换为部分SQL查询(使用Transact-SQL语法),或者我必须重新发明轮子? 更新:评论要求提供我想要做的一个例子。 其实, 下面Ryan Wright的回答完全说明了我想要达到的结果,除了我的问题是关于如何使用EF和LINQ to SQL实际使用的.NET Framework的现有机制来实现的 ,而不必重新发明轮子,并自己写成千行的未经过testing的代码来做类似的事情。 这也是一个例子。 再一次请注意,没有ORM生成的代码。 private class Product { [DatabaseMapping("ProductId")] public int Id { get; set; } [DatabaseMapping("Price")] public int PriceInCents { get; set; } } private string Convert(Expression expression) { // Some magic calls to .NET Framework code happen […]