小编Mat*_*els的帖子

广度优先与深度优先

遍历树/图时,广度优先和深度之间的区别首先是什么?任何编码或伪代码示例都会很棒.

algorithm breadth-first-search tree-traversal depth-first-search

166
推荐指数
3
解决办法
11万
查看次数

每个循环的C#以什么顺序迭代List <T>?

我想知道C#中的foreach循环遍历一个System.Collections.Generic.List<T>对象的顺序.

我发现关于同一主题的另一个问题,但我觉得它不能满足我的问题.

有人说未定义任何订单.但正如其他人所说,它遍历数组的顺序是固定的(从0到长度-1).8.8.4 foreach声明

还有人说,对于任何带有订单的标准类(例如List<T>)也是如此.我找不到任何文件来支持这一点.所以我知道它现在可能会起作用,但也许在下一个.NET版本中它会有所不同(即使它可能不太可能).

List(t).Enumerator没有运气也查看了文档.

另一个相关问题表明,对于Java,它在文档中特别提到:

List.iterator()以适当的顺序返回此列表中元素的迭代器."

我在C#文档中寻找类似的东西.

提前致谢.

编辑:感谢所有人的所有答案(令人惊讶的是我收到了如此多的回复).我从所有答案中理解的是,List<T>它总是按照索引的顺序迭代.但我仍然希望看到明确的文档和平,说明这一点,类似于Java文档List.

c# foreach operator-precedence

76
推荐指数
3
解决办法
5万
查看次数

在构建我的云项目时,"对象引用未设置为对象的实例"

当我使用一堆云项目构建我的解决方案时,我在输出中看到一个或多个"错误:对象引用未设置为对象的实例"消息.当我尝试运行其中一个云项目时,我得到弹出窗口"有构建错误.你想继续并运行上一次成功构建",但错误列表中没有错误和相同的"错误:对象ref ..."输出中的错误.

当我单击我的云项目上的包时,我得到一个消息框,其中"对象引用未设置为对象的实例",当我在云项目中的"角色"下右键单击 - >项目引用的属性时也是如此.

如果我使用命令行使用msbuild构建我的解决方案,我不会收到错误.

我尝试重启Visual Studio以及我的电脑.我还尝试重新安装Azure工具(2.1),然后重新安装Visual Studio.

我的同事现在在Visual Studio 2013 RC上遇到了同样的问题.

有没有人有同样的问题?

我搜索过,但只发现发布时遇到问题的人,解决方案是手动打包.

azure nullreferenceexception visual-studio-2012

35
推荐指数
2
解决办法
3万
查看次数

为什么使用FinalReleaseComObject而不是ReleaseComObject?

我知道基本的区别,因为ReleaseComObject只减少一些计数器并将其FinalReleaseComObject减少到零.

所以我通常听到的是,调用FinalReleaseComObject因为那时你确定COM对象真的被释放了.

但这让我想知道,这个反击有一点对吗?如果你总是打电话,你不打破这种机制吗FinalReleaseComObject?如果在您打电话之前该计数器不是一个,那么ReleaseComObject可能没有理由吗?

什么可能导致它高于一个不应该?

提前致谢.

PS:我的COM体验只包括使用Excel Interop.不确定这个问题是否属于该域的本地问题(即在Office Interop之外,FinalReleaseComObject不经常使用).

更新1

文章丹提及使用会谈ReleaseComObject时,即可大功告成.据我从文章中了解,这是正常的方式.我认为,如果你这样做,它应该工作正常.在对文章的评论中,作者建议有人ReleaseComObject在循环中调用直到它真正发布(该文章来自2006年,所以这与调用类似FinalReleaseComObject).但他也表示这可能是危险的.

如果你真的想让RCW在代码中的某个特定点调用Release(),你可以在循环中调用ReleaseComObject()直到返回值达到零.这应该确保RCW将调用Release().但是,如果您这样做,请注意,当其他托管引用尝试使用该RCW时,它将导致异常."

这让我相信总是打电话确实不是一个好主意FinalReleaseComObject,因为你可以在其他地方引起例外.正如我现在所看到的那样,如果你绝对确定可以,你应该只打电话给你.

不过,我对此事的经验不多.我不知道怎么可以肯定.如果计数器在不应该增加的情况下增加,那么解决这个问题是不是更好?如果是这样,那么我会说FinalReleaseComObject更多的是黑客而不是最佳实践.

.net com interop

33
推荐指数
1
解决办法
2万
查看次数

控制台在Eclipse Juno中消失

我正在使用Eclipse Juno.我在Java视角工作,突然间我最小化了控制台.我不知道它去了哪里,但我无法取回它.我甚至试图从Windows> Show View> Console获取它,但我没有得到我的控制台.

eclipse console eclipse-juno

30
推荐指数
3
解决办法
3万
查看次数

为什么"并非所有代码路径都返回一个值",带有switch语句和枚举?

我有以下代码:

public int Method(MyEnum myEnum)
{
    switch (myEnum)
    {
        case MyEnum.Value1: return 1;
        case MyEnum.Value2: return 2;
        case MyEnum.Value3: return 3;
    }
}

public enum MyEnum
{
    Value1,
    Value2,
    Value3
}
Run Code Online (Sandbox Code Playgroud)

我得到错误:"Not all code paths return a value".我不明白该switch声明如何不能跳转到指定的情况之一.

可以将enum某种方式null

.net c# enums visual-studio-2008 c#-3.0

27
推荐指数
2
解决办法
7280
查看次数

在PHP中是否有一个特殊的对象初始化器构造,就像现在在C#中一样?

我知道在C#中你现在可以这样做:

var a = new MyObject
{
    Property1 = 1,
    Property2 = 2
};
Run Code Online (Sandbox Code Playgroud)

在PHP中也有类似的东西吗?或者我应该通过构造函数还是通过多个语句来完成它;

$a = new MyObject(1, 2);

$a = new MyObject();
$a->property1 = 1;
$a->property2 = 2;
Run Code Online (Sandbox Code Playgroud)

如果可能,但每个人都认为这是一个糟糕的主意,我也想知道.

PS:对象只不过是一堆属性.

php oop constructor initialization

22
推荐指数
1
解决办法
3285
查看次数

在ASP.NET MVC中设置包含连字符的html属性时出现问题

我已经定义了一个自定义的html属性"data-something-something".在我看来,我使用Html扩展方法来创建一个文本框.其中一个参数是匿名的object HtmlAttributes.我想传递这个值:new { data-something-something = "value" }.但是,data-something-something由于连字符,.NET不会将其识别为属性名称.

dataSomethingSomething现在改了它,但我想根据HTML 5标准定义我的自定义属性(即用'data-'作为前缀).

在尝试对new { class = "class-name"}类属性执行操作之前,我遇到过类似的问题.在这种情况下,我发现我可以class用"@"符号作为前缀,使其工作(即new { @class = "class-name"}).因为有这种情况的解决方案,我希望可能有一个解决我当前问题的方法(前缀为'@'不起作用).

提前致谢.

.net c# asp.net-mvc asp.net-mvc-3

16
推荐指数
1
解决办法
3523
查看次数

如何让Visual Studio 2012检测是否需要重新映射虚拟目录?

我的情况:
我正在开发一个ASP.NET MVC项目并在IIS-Express中进行调试.有时当我们创建临时分支时,该分支将使用相同的端口进行调试.这意味着IIS中的虚拟目录是相同的,我不能同时运行它们.

它曾经如何在vs2010中运行:
这不是一个真正的问题,因为我不想同时运行它们.但是,在VS2010中,我第一次打开分支时会收到警告.它问我是否要重新映射URL.当我后来打开后备箱时,我会得到同样的警告(参见/sf/answers/216547411/). vs2010中的消息

它如何在vs2012中不起作用:
现在在VS2012中,我不再收到警告了.如果我忘记手动转到设置并按"创建虚拟目录"(这已经发生了几次),那么当我点击在分支中运行时,它将实际运行主干.这可能非常令人困惑.特别是如果我尝试调试或系统中断异常.来自中继的源文件将在分支解决方案中打开.然后我想我正在编辑分支机构,但我实际上编辑了主干...... 我需要按下VS2012中的按钮

反正让VS2012执行与VS2010相同的检查吗?

或者我正在做/理解其他完全错误的事情?

asp.net-mvc iis-express visual-studio-2012

15
推荐指数
1
解决办法
638
查看次数

WPF用于UI布局,使用一个网格或嵌套网格更好

我在WPF中创建UI,我有一堆功能区域,我使用Grid来组织它.

现在我想要的网格不一致,因为一些功能区域将跨越网格中的多个单元格.我想知道解决这个问题的最佳做法是什么.我应该创建一个网格,然后为每个功能区域设置它跨越多个单元格,或者我应该将其拆分为多个嵌套网格.

在此图像中,最左边的面板(由灰色条分隔的面板)是我想要的.中间面板显示一个网格,其中蓝线与功能区域重叠.最右边的面板显示了我如何使用嵌套网格来完成它.您可以看到绿色网格有一个水平分割.底部单元格是黄色网格,垂直分割.在左侧,单元格是红色网格,再次是水平分割. 网格http://www.freeimagehosting.net/uploads/08f2711bae.jpg

我只是想知道什么是最佳实践,中间或右侧面板.

更新:只是为了澄清,一个更"代码导向"的例子:

中间面板

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="25" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="200" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Menu          Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" />
    <uc:Info       Grid.Row="1" Grid.Column="0" />
    <uc:Control    Grid.Row="2" Grid.Column="0" />
    <uc:Simulation Grid.Row="1" Grid.Column="1" Grid.RowSpan="2" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

右侧小组:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="25" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <Menu Grid.Row="0"/>

    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Grid Grid.Column="0">
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <uc:Info    Grid.Row="0" …
Run Code Online (Sandbox Code Playgroud)

c# wpf grid

12
推荐指数
1
解决办法
9804
查看次数