遍历树/图时,广度优先和深度之间的区别首先是什么?任何编码或伪代码示例都会很棒.
algorithm breadth-first-search tree-traversal depth-first-search
我想知道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
.
当我使用一堆云项目构建我的解决方案时,我在输出中看到一个或多个"错误:对象引用未设置为对象的实例"消息.当我尝试运行其中一个云项目时,我得到弹出窗口"有构建错误.你想继续并运行上一次成功构建",但错误列表中没有错误和相同的"错误:对象ref ..."输出中的错误.
当我单击我的云项目上的包时,我得到一个消息框,其中"对象引用未设置为对象的实例",当我在云项目中的"角色"下右键单击 - >项目引用的属性时也是如此.
如果我使用命令行使用msbuild构建我的解决方案,我不会收到错误.
我尝试重启Visual Studio以及我的电脑.我还尝试重新安装Azure工具(2.1),然后重新安装Visual Studio.
我的同事现在在Visual Studio 2013 RC上遇到了同样的问题.
有没有人有同样的问题?
我搜索过,但只发现发布时遇到问题的人,解决方案是手动打包.
我知道基本的区别,因为ReleaseComObject
只减少一些计数器并将其FinalReleaseComObject
减少到零.
所以我通常听到的是,调用FinalReleaseComObject
因为那时你确定COM对象真的被释放了.
但这让我想知道,这个反击有一点对吗?如果你总是打电话,你不打破这种机制吗FinalReleaseComObject
?如果在您打电话之前该计数器不是一个,那么ReleaseComObject
可能没有理由吗?
什么可能导致它高于一个不应该?
提前致谢.
PS:我的COM体验只包括使用Excel Interop.不确定这个问题是否属于该域的本地问题(即在Office Interop之外,FinalReleaseComObject
不经常使用).
该文章丹提及使用会谈ReleaseComObject
时,即可大功告成.据我从文章中了解,这是正常的方式.我认为,如果你这样做,它应该工作正常.在对文章的评论中,作者建议有人ReleaseComObject
在循环中调用直到它真正发布(该文章来自2006年,所以这与调用类似FinalReleaseComObject
).但他也表示这可能是危险的.
如果你真的想让RCW在代码中的某个特定点调用Release(),你可以在循环中调用ReleaseComObject()直到返回值达到零.这应该确保RCW将调用Release().但是,如果您这样做,请注意,当其他托管引用尝试使用该RCW时,它将导致异常."
这让我相信总是打电话确实不是一个好主意FinalReleaseComObject
,因为你可以在其他地方引起例外.正如我现在所看到的那样,如果你绝对确定可以,你应该只打电话给你.
不过,我对此事的经验不多.我不知道怎么可以肯定.如果计数器在不应该增加的情况下增加,那么解决这个问题是不是更好?如果是这样,那么我会说FinalReleaseComObject
更多的是黑客而不是最佳实践.
我正在使用Eclipse Juno.我在Java视角工作,突然间我最小化了控制台.我不知道它去了哪里,但我无法取回它.我甚至试图从Windows> Show View> Console获取它,但我没有得到我的控制台.
我有以下代码:
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
?
我知道在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:对象只不过是一堆属性.
我已经定义了一个自定义的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"}
).因为有这种情况的解决方案,我希望可能有一个解决我当前问题的方法(前缀为'@'不起作用).
提前致谢.
我的情况:
我正在开发一个ASP.NET MVC项目并在IIS-Express中进行调试.有时当我们创建临时分支时,该分支将使用相同的端口进行调试.这意味着IIS中的虚拟目录是相同的,我不能同时运行它们.
它曾经如何在vs2010中运行:
这不是一个真正的问题,因为我不想同时运行它们.但是,在VS2010中,我第一次打开分支时会收到警告.它问我是否要重新映射URL.当我后来打开后备箱时,我会得到同样的警告(参见/sf/answers/216547411/).
它如何在vs2012中不起作用:
现在在VS2012中,我不再收到警告了.如果我忘记手动转到设置并按"创建虚拟目录"(这已经发生了几次),那么当我点击在分支中运行时,它将实际运行主干.这可能非常令人困惑.特别是如果我尝试调试或系统中断异常.来自中继的源文件将在分支解决方案中打开.然后我想我正在编辑分支机构,但我实际上编辑了主干......
反正让VS2012执行与VS2010相同的检查吗?
或者我正在做/理解其他完全错误的事情?
我在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# ×4
.net ×3
asp.net-mvc ×2
algorithm ×1
azure ×1
c#-3.0 ×1
com ×1
console ×1
constructor ×1
eclipse ×1
eclipse-juno ×1
enums ×1
foreach ×1
grid ×1
iis-express ×1
interop ×1
oop ×1
php ×1
wpf ×1