Tag: C#的

C ++成员初始化列表

请解释如何使用成员初始化列表。 我有一个.h文件和.cpp文件中声明的类,如下所示: class Example { private: int m_top; const int m_size; … public: Example ( int size, int grow_by = 1 ) : m_size(5), m_top(-1); … ~Example(); }; 我正在初始化由于const对象创buildm_size 。 我应该如何编写构造函数? 我应该重复: m_size(5), m_top(-1) ,或者我可以省略这一步? Example::Example( int size, int grow_by) { … some code here } 要么 Example::Example( int size, int grow_by) : m_size(5), m_top(-1) […]

当我的ListBox中有图像时,为什么会出现OutOfMemoryException?

我想显示存储在Windows Phone 8照片文件夹中的所有图像在我的自定义画廊,它使用ListBox来显示图像。 ListBox代码如下所示: <phone:PhoneApplicationPage.Resources> <MyApp:PreviewPictureConverter x:Key="PreviewPictureConverter" /> </phone:PhoneApplicationPage.Resources> <ListBox Name="previewImageListbox" VirtualizingStackPanel.VirtualizationMode="Recycling"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel CleanUpVirtualizedItemEvent="VirtualizingStackPanel_CleanUpVirtualizedItemEvent_1"> </VirtualizingStackPanel> </ItemsPanelTemplate> </ListBox.ItemsPanel> <ListBox.ItemTemplate> <DataTemplate> <Grid> <Image Source="{Binding Converter={StaticResource PreviewPictureConverter}}" HorizontalAlignment="Center" VerticalAlignment="Center" /> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 用下面的转换器: public class PreviewPictureConverter : System.Windows.Data.IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { PreviewImageItem c = value […]

结构的不变性

可能重复: 为什么可变的结构是邪恶的? 我在很多地方读过,包括在这里最好把结构做成不变的。 这背后的原因是什么? 我看到很多微软创build的结构都是可变的,就像xna中的结构一样。 在BCL中可能还有更多。 不遵循这个准则有什么优点和缺点?

malloc可以分配的最大内存

我试图弄清楚我的机器(1GB内存160GB高清Windows平台)可以最大限度地使用malloc。 我读了malloc可以分配的最大内存限于物理内存(在堆上)。 另外,当一个程序超过内存消耗到一定程度,计算机停止工作,因为其他应用程序没有得到足够的内存,他们需要。 所以要确认一下,我用C写了一个小程序: int main(){ int *p; while(1){ p=(int *)malloc(4); if(!p)break; } } 我希望有一段时间,内存分配将失败,循环会中断,但我的电脑挂起,因为它是一个无限循环。 我等了大约一个小时,最后我不得不强行closures我的电脑。 一些问题: malloc是否也从HD分配内存? 上述行为的原因是什么? 为什么在任何时候都没有循环rest? 为什么没有分配失败?

在C和C ++中通过索引访问数组

所以,有一些面试官喜欢问什么原因这个小技巧: int arr[] = {1, 2, 3}; 2[arr] = 5; // does this line compile? assert(arr[2] == 5); // does this assertion fail? 根据我所能理解的, a[b]被转换为*(a + b) ,由于加法是可交换的,所以它们的顺序并不重要,所以2[a]真的是*(2 + a) 。 这是保证工作的C和/或C + +的规格?

如何在C ++中添加额外的库?

Allergro是一个开源的C ++插件库,用于graphics处理。 我如何将这个库添加到我的编译器? 这些说明不适合我,因为我有Windows 7.我不知道操作系统是否重要。 我有Visual Studio速成版。 该库是一个.dll文件。 我如何将其添加到我的项目?

这个“数组大小”模板函数是如何工作的?

可能重复: 有人可以解释这个模板代码,给我一个数组的大小? 函数模板中的魔法参数 有人可以解释这个代码如何工作? 我知道这段代码的目的是获得一个数组的长度,但我不知道这个代码如何工作: template<typename T, int size> int GetArrLength(T(&)[size]){return size;} 谢谢。

如何将IEnumerable列表传递给控制器​​在MVC包括checkbox状态?

我有一个mvc应用程序,我正在使用这样的模型: public class BlockedIPViewModel { public string IP { get; set; } public int ID { get; set; } public bool Checked { get; set; } } 现在我有一个视图来绑定一个像这样的列表: @model IEnumerable<OnlineLotto.Web.Models.BlockedIPViewModel> @using (Html.BeginForm()) { @Html.AntiForgeryToken() } @foreach (var item in Model) { <tr> <td> @Html.HiddenFor(x => item.IP) @Html.CheckBoxFor(x => item.Checked) </td> <td> @Html.DisplayFor(modelItem => item.IP) </td> […]

C#中的静默失败,看似未处理的exception不会使程序崩溃

在Winforms应用程序中,在窗体的Load事件中,添加以下行: throw new Exception(); 并运行该应用程序。 它运行没有问题。 这被称为无声故障,您可以尝试在之前和之后添加消息框,并且很快您会发现,不是崩溃应用程序,而是从Load事件中退出throw语句。 我相信没有必要解释这是多么的丑陋和危险。 尽pipe如此,我仍然怀疑这种恐怖行为背后的原因。 我相信这不是一个devise决定,可能是不择手段,或者懒惰。 有人知道吗? 如果有人能指出我可能导致静音故障的事件列表,我会很高兴。 这是我的代码片段 – 我不知道它可能会有什么帮助 – 但是,在这里是: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Form f = new Form(); f.Load […]

Valgrind:使用<iostream>,仍然可以使用普通程序访问内存

采取以下简单的程序: #include <iostream> int main() { return 0; } 如果我使用valgrind运行这个,我被告知72,704 bytes in 1 blocks中有72,704 bytes in 1 blocks still reachable 。 关于是否担心可以警告的问题,我们已经进行了广泛的讨论 – 我并不担心这一点。 我只是想知道如何简单地包括一个标准的库头可能会导致一个仍然可及的警告,当没有从该库中的对象被分配在程序本身。 这里是完整的valgrind输出: $ valgrind –leak-check=full –track-origins=yes –show-reachable=yes ./ValgrindTest ==27671== Memcheck, a memory error detector ==27671== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==27671== Using Valgrind-3.10.1 and LibVEX; […]