Tag: C#的

检查LINQ列表是否为空

什么是“最好的”(考虑到速度和可读性),以确定列表是否为空? 即使列表的types是IEnumerable<T>并且没有Count属性。 现在我在这之间折腾: if (myList.Count() == 0) { … } 和这个: if (!myList.Any()) { … } 我的猜测是,第二个选项更快,因为一旦它看到第一个项目就会返回结果,而第二个选项(对于IEnumerable)将需要访问每个项目以返回计数。 话虽如此,第二个选项看起来对你来说是可读的吗? 你更喜欢哪个? 或者你能想出一个更好的方法来testing一个空的列表吗? 编辑 @ lassevk的回应似乎是最合乎逻辑的,再加上一些运行时检查,如果可能,使用caching计数,如下所示: public static bool IsEmpty<T>(this IEnumerable<T> list) { if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0; return !list.Any(); }

std :: launder的目的是什么?

P0137引入了函数模板std::launder并在有关联合,生命期和指针的章节中对标准进行了许多更改。 这篇论文正在解决什么问题? 我必须注意的语言有哪些变化? 我们在launder什么?

如何打开(字面上)GCC的所有警告?

我希望启用 – 从字面上 – GCC 所有的警告。 (你会认为这很容易…) 你会想 – 可能会做的伎俩,但不是! 还需要-Wextra 。 你会想-Wextra可能会诀窍,但不是! 并非所有列出的警告(例如-Wshadow )都是由此启用的。 而且我还不知道这个清单是否全面。 我如何告诉GCC启用(如果没有,还有或者是) 所有的警告?

这是斯巴达,还是呢?

以下是面试问题。 我想出了一个解决scheme,但我不知道为什么它的作品。 题: 在不修改Sparta类的情况下,编写一些使MakeItReturnFalse返回false代码。 public class Sparta : Place { public bool MakeItReturnFalse() { return this is Sparta; } } 我的解决scheme public class Place {public interface Sparta {}} 但为什么MakeItReturnFalse()中的Sparta引用{namespace}.Place.Sparta而不是{namespace}.Sparta ?

VB.NET相当于C#属性的简写?

是否有一个相当于C#的VB.NET: public string FirstName { get; set; } 我知道你可以做 Public Property name() As String Get Return _name.ToString End Get Set(ByVal value As String) _name = value End Set End Property 但我似乎无法谷歌了一个Visual Basic的速记答案。

是gcc的__attribute __((packed))/ #pragma pack不安全?

在C中,编译器将按照声明的顺序排列结构的成员,在成员之间插入可能的填充字节,或者在最后一个成员之后插入,以确保每个成员都正确alignment。 gcc提供了一个语言扩展, __attribute__((packed)) ,它告诉编译器不要插入填充,允许结构成员错位。 例如,如果系统通常要求所有的int对象都有4字节的alignment方式, __attribute__((packed))会导致int结构成员被分配到奇数的偏移量。 引用gcc文档: “packed”属性指定variables或结构字段应具有尽可能最小的alignment方式 – 一个字节表示一个variables,一个字段表示一个字段,除非用“aligned”属性指定较大的值。 很明显,使用这个扩展可以导致较小的数据需求,但代码较慢,因为编译器必须(在某些平台上)一次生成一个字节访问未alignment成员的代码。 但是有没有这种情况是不安全的? 编译器是否总是生成正确(尽pipe较慢)的代码来访问打包结构的错位成员? 它在所有情况下都可以这样做吗?

unit testing项目可以加载目标应用程序的app.config文件吗?

我正在testing使用app.config文件加载configuration属性的.NET应用程序(.exe)。 unit testing应用程序本身没有一个app.config文件。 当我尝试unit testing利用任何configuration属性的方法时,它们返回null 。 我假设这是因为unit testing应用程序不会加载目标应用程序的app.config。 有没有办法来覆盖这一点,或者我必须编写一个脚本来将目标app.config的内容复制到本地app.config? 这篇文章提出了这个问题,但作者真的是从另一个angular度来看待这个问题。 编辑:我应该提到,我正在使用VS08团队系统为我的unit testing。

?? 合并空string?

我发现自己做的事情越来越多的是检查一个string为空(如""或null)和一个条件运算符。 当前的例子: s.SiteNumber.IsNullOrEmpty() ? "No Number" : s.SiteNumber; 这只是一个扩展方法,相当于: string.IsNullOrEmpty(s.SiteNumber) ? "No Number" : s.SiteNumber; 既然它是空的而不是空的, ?? 将不会做的伎俩。 一个string.IsNullOrEmpty()版本 将是完美的解决scheme。 我认为必须有一个更干净的方式做到这一点(我希望!),但我一直在find它的损失。 有没有人知道更好的方法来做到这一点,即使它只是在.NET 4.0?

如何将数组的一部分复制到C#中的另一个数组?

我怎样才能将一个数组的一部分复制到另一个数组? 考虑我有 int[] a = {1,2,3,4,5}; 现在,如果我给数组a的开始索引和结束索引,它应该被复制到另一个数组。 就像我开始索引为1,结束索引为3,元素2,3,4应该被复制到新的数组中。

部分类在单独的dll中

是否有可能有两个部分(相同的命名空间,相同的类名称)在不同的DLL分部类?