Tag: C#的

计数属性与Count()方法?

使用集合我有两种方法来获取对象的数量; Count(属性)和Count()方法。 任何人都知道什么是关键区别? 我可能是错的,但是我总是在任何条件语句中使用Count属性,因为我假设Count()方法对集合执行某种查询,而Count必须在我得到之前就已经被分配了。 但这是一个猜测 – 我不知道如果我错了,性能是否会受到影响。 编辑:出于好奇然后,如果集合为空将Count()抛出exception? 因为我很确定Count属性只是返回0。

如何从if语句中“打破”?

我有一个如果我要“打破”的声明。 我明白,rest只是为了循环。 谁能帮忙? 对于那些需要我想要做的事情的例子: if( color == red ) { … if( car == hyundai ) break; … }

错误C2065:'cout':未声明的标识符

我正在编写我的编程任务的'驱动程序'部分,我一直在得到这个荒谬的错误: 错误C2065:'cout':未声明的标识符 我甚至尝试过使用std :: cout,但我得到另一个错误,说: 智能感知:命名空间“std”没有成员“cout”,当我已经声明使用命名空间std,包括iostream +我甚至试图使用ostream 我知道这是一个标准的noob问题,但这一直困扰着我,我是一个新手(意思是:我已经编程在…之前) #include <iostream> using namespace std; int main () { cout << "hey" << endl; return 0; } 我正在使用Visual Studio 2010并运行Windows 7.所有的.h文件都有“using namespace std”,并包含iostream和ostream。

如果您在多个平台上部署,未定义的行为只是一个问题?

大多数围绕未定义行为 (UB)的对话都谈论如何有一些平台可以做到这一点,或者一些编译器这样做。 如果你只对一个平台感兴趣而且只有一个编译器(同一版本),而且你知道你会使用它们多年? 没有什么改变,但代码和UB没有实现定义。 一旦UB已经体现了这种架构,编译器和你已经testing过了,你不能假设从那时起,无论编译器第一次使用UB,每次都会这样做吗? 注意:我知道未定义的行为是非常非常糟糕的 ,但是当我在这种情况下用某人编写的代码指出UB时,他们问了这个问题,我没有什么比这更好的了,如果你需要升级或者港口,所有的UB将是非常昂贵的修复。 看来有不同的行为类别: Defined – 这是由标准logging的行为 Supported – 这是Supported行为logging的行为定义 Extensions – 这是一个文档的补充,支持低级别的操作,如popcount ,分支提示,属于这个类别 Constant – 虽然没有logging,但是这些行为可能会在给定的平台上是一致的,如endianness, sizeof int而不是可移植的可能不会改变 Reasonable – 通常是安全的,通常是遗留的,从无符号到有符号的转换,使用指针的低位作为临时空间 Dangerous – 读取未初始化或未分配的内存,返回一个临时variables,在非pod类上使用memcopy 看起来Constant在一个平台上的补丁版本中可能是不变的。 “ Reasonable和“ Dangerous之间的界限似乎越来越趋于Dangerous因为编译器在优化方面变得更加积极

用户控制 – 自定义属性

我已经在Visual Studio(WinForms C#)中开发了一个用户控件,并且有一个问题。 我需要我的用户控件的用户能够更改某些string值,我希望他们能够将用户控件添加到他们的窗体,然后单击它以调出属性窗格,其中我的用户控件的自定义属性将显示。 我怎样才能有我自己的用户控件的自定义属性? 例如: 我的用户控件包含一个TextBox,我希望用户能够通过Design-Time属性中名为“Text”或“Value”的属性来更改该TextBox的值。

如何完全禁用断言

我有我的代码充满了调用assert(condition) 。 在debugging版本中,我使用g++ -g开发我的断言。 令我惊讶的是,我可以在我的发行版本中看到assertion,也就是没有使用-g选项编译的版本。 我怎么能在编译时完全禁用我的断言? 我应该在任何构build中明确定义NDEBUG ,尽pipe它们是debugging,发布或任何其他的东西?

closures主窗口时,WPF应用程序不closures

我习惯于Visual Studio中的WinForms编程,但我想给WPF一个尝试。 我为我的项目添加了另一个窗口Window01。 主窗口被称为MainWindow。 在public MainWindow()构造函数之前,我声明了Window01: Window01 w1; 现在我实例化这个窗口: private void Window_Loaded(object sender, RoutedEventArgs e) { w1 = new Window01(); } 我有一个窗口显示的button: w1.ShowDialog(); 。 这里的“有趣的”事情是,如果我启动应用程序(debugging)并在几秒钟后退出(我没有在应用程序中做任何事情),Visual Studio不会停止debugging,就好像应用程序是仍在运行。 如果我移动w1 = new Window01(); 对于button点击方法,意思就是在ShowDialog()之上,Visual Studio运行正常 – 也就是说,当我退出应用程序时,debugging停止。 为什么这个奇怪的行为

如何将一个JToken添加到一个JObject?

我试图从一些文本添加JSON对象到现有的使用JSON.Net的JSON文件。 例如,如果我有如下的JSON数据: { "food": { "fruit": { "apple": { "colour": "red", "size": "small" }, "orange": { "colour": "orange", "size": "large" } } } } 我一直在努力做到这一点: var foodJsonObj = JObject.Parse(jsonText); var bananaJson = JObject.Parse(@"{ ""banana"" : { ""colour"": ""yellow"", ""size"": ""medium""}}"); var bananaToken = bananaJson as JToken; foodJsonObj["food"]["fruit"]["orange"].AddAfterSelf(bananaToken); 但是这给出了错误: "Newtonsoft.Json.Linq.JProperty cannot have multiple values." 我实际上尝试了几种不同的方法,但似乎无法获得任何地方。 在我的例子中,我真正想做的是将新项目添加到“水果”。 […]

Visual Studio:如何“复制到输出目录”而不复制文件夹结构?

我的项目文件夹的\ lib文件夹中有几个dll文件。 在dll的属性页面中,我select了“Build Action”作为“Content”和“Copy to Output Directory”作为“Copy always”。 编译后,我实际上得到了复制的dll,但它们在\ bin \ Release \ lib中,而不在\ bin \ Release中。 有没有办法将dll文件复制到\ bin \ Release(而不是\ bin \ Release \ lib),而无需编写生成脚本或使用nant等?

最简洁的方式将ListBox.items转换为通用列表

我正在使用C#并针对.NET Framework 3.5。 我正在寻找一个简单而有效的小代码,将ListBox中的所有项复制到List<String> (通用列表 )中。 目前我有类似于下面的代码: List<String> myOtherList = new List<String>(); // Populate our colCriteria with the selected columns. foreach (String strCol in lbMyListBox.Items) { myOtherList.Add(strCol); } 当然,这是有效的,但是我不禁感到,用一些较新的语言function必须有更好的方法来做到这一点。 我在想像List.ConvertAll方法的东西,但这只适用于generics列表而不是ListBox.ObjectCollection集合。