我很好奇是什么限制必须让设计决定不让HashSet能够使用LINQ的ForEach查询.
这两种实现的幕后实际情况有何不同:
var myHashSet = new HashSet<T>;
foreach( var item in myHashSet ) { do.Stuff(); }
Run Code Online (Sandbox Code Playgroud)
VS
var myHashSet = new HashSet<T>;
myHashSet.ForEach( item => do.Stuff(); }
Run Code Online (Sandbox Code Playgroud)
我(非常)确定这只是因为HashSet没有实现IEnumerable - 但是正常的ForEach循环做什么不同会使HashSet更多地支持它?
谢谢
我目前有两个WIX项目 - 一个用于创建x86安装程序,另一个用于创建x64安装程序.我想将这两个项目合并为一个项目,该项目使用变量来控制程序流程.
我有以下内容:
<?if $(var.Platform) = x64 ?>
<?define ProductName = "CableSolve Web (64 bit)" ?>
<?define Win64 = "yes" ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
<?define ProductName = "CableSolve Web" ?>
<?define Win64 = "no" ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>
Run Code Online (Sandbox Code Playgroud)
然后我进入Visual Studio - > Build - > Configuration Manager并设置如下:

然后,我完成并删除了两个项目的所有组件/目录中的所有"Win64 ='yes'"和"Win64 ='no'"参数.
我想知道是否还有比此更多的东西.当我创建我的x64安装程序时,我看到它试图安装到C:\ Program Files(x86)...而不是C:\ Program Files.我假设这意味着代码正在下降到'else'语句 - 但我不知道如何确认这一点.
是否还需要设置其他变量才能确保正确生成x64安装路径?
谢谢
我继承了下面的所有安装程序代码(不包括我目前正在添加的变量).我添加了$(var.PlatformProgramFilesFolder)以及EnvironmentVariables wxi.

编辑2:这可能是罪魁祸首,但试图找到其配置为x86的原因:
------ Skipped Rebuild All:项目:CS Web Installer x64,配置:发布x86 ------
我有 WiX 安装程序并且正在关注wix-tricks-and-tips
我的变量都工作正常,但由于以下原因,我收到了数百条警告:
<Component Id="C.Content.2011.1.414" DiskId="1" Guid="MYGUID" Win64="$(var.Win64)" KeyPath="yes">
Run Code Online (Sandbox Code Playgroud)
我收到警告:
警告 1 “Win64”属性无效 - 值“$(var.Win64)”根据其数据类型“ http://schemas.microsoft.com/wix/2006/wi:YesNoType ”无效 - “$”字符(十六进制值 0x24)不能包含在名称中。
然而:
<?xml version="1.0" encoding="utf-8"?>
<Include>
<?if $(var.Platform) = x64 ?>
<?define Win64 = "yes" ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
<?define Win64 = "no" ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>
</Include>
Run Code Online (Sandbox Code Playgroud)
显然 Win64 是/否...我该如何避免此警告?
谢谢
[WebMethod(Description = "Return all activities by Task.")]
public IList<ActivityDto> GetActivitiesByTaskID(int taskID)
{
IList<Activity> activities = ActivityDao.GetByTaskID(taskID);
IList<ActivityDto> activityDtos = new List<ActivityDto>(activities.Count);
foreach(Activity activity in activities)
activityDtos.Add(ActivityDto.Create(activity));
return activityDtos;
}
Run Code Online (Sandbox Code Playgroud)
缩写为:
[WebMethod(Description = "Return all activities by Task.")]
public IList<ActivityDto> GetActivitiesByTaskID(int taskID)
{
return ActivityDao.GetByTaskID(taskID).Select(ActivityDto.Create).ToList();
}
Run Code Online (Sandbox Code Playgroud)
我觉得因为我不得不问 - 它可能做得太多了.但是,引起我担忧的唯一部分是将函数传递给Select语句.我认为我还没有充分利用这种语法,而且它实际上是一种非常简洁的表达方式.
我想知道其他程序员是否会对这种缩短版本的方法感到不安.
编辑:此外,对效率比较的评论将不胜感激.我知道LINQ因在大型数据集上工作速度慢而臭名昭着.我想说在某些情况下可以枚举10,000-20,000条记录.
我最近因为这两条MVC4路线显然功能不同而受到灼伤.我想知道是否有人能突出显示正在发生的事情,所以我可以更好地理解.
routes.MapRoute(
"post-User",
"User",
new { controller = "User", action = "create" },
new { httpMethod = new HttpMethodConstraint("POST") }
);
routes.MapRoute(
"post-User",
"{controller}",
new { controller = "User", action = "create" },
new { httpMethod = new HttpMethodConstraint("POST") }
);
Run Code Online (Sandbox Code Playgroud)
我认为{controller}位是占位符,并且在下一行中说控制器="用户"将使这两个语句等效.显然使用{controller}设置所有路由的默认值?
http://jsfiddle.net/MeoMix/8zg2V/83/
我有以下jsFiddle.这个想法是当显示一个太长的上下文菜单项时,它会用省略号呈现,但是在鼠标悬停时它会翻阅文本.
有问题的代码:
//Provides helper methods for non-specific functionality.
define('helpers', [], function () {
'use strict';
return {
scrollElementInsideParent: function(element, parent) {
// Scroll the element if its too long to read.
$(element).mouseover(function () {
var distanceToMove = $(this).width() - $(parent).width();
console.log("My width and parent width:", $(this).width(), $(parent).width());
$(this).animate({
marginLeft: "-" + distanceToMove + "px"
}, {
// Just a feel good value; scales as the text gets longer
duration: 15 * distanceToMove,
easing: 'linear'
});
}).mouseout(function () {
$(this).stop(true).animate({ …Run Code Online (Sandbox Code Playgroud) 我遇到一个关于jQuery UI的可排序占位符的初始定位的错误,当我将一个项目从一个可排序拖动到另一个可连接的可排序时.
这是一张图片,显示占位符出现在应该位于其上方的一个索引位置.请注意,RHS列表中的Item3位于占位符下方,但是当占位符出现时,我的指针完全位于Item3下方:

一旦帮助器被拖得更多,该位置就会自行修复,但会导致一些丑陋的闪烁.请注意,如果我将助手拖出RHS列表,然后将其拖回RHS列表 - 则不会出现闪烁.它只是在它第一次进入时.
这是链接中引用的代码:
// HTML:
<div class='sortable-list'>
<div class='sortable-list-item'>Item1</div>
<div class='sortable-list-item'>Item2</div>
<div class='sortable-list-item'>Item3</div>
</div>
<div class='sortable-list'>
<div class='sortable-list-item'>Item1</div>
<div class='sortable-list-item'>Item2</div>
<div class='sortable-list-item'>Item3</div>
</div>
// CSS:
.sortable-list {
border: solid 1px black;
height: 250px;
margin-left: 5px;
overflow-y: auto;
overflow-x: hidden;
display: inline-block;
}
.sortable-list-item {
border: solid 1px red;
height: 50px;
width: 100px;
}
.sortable-placeholder {
background-color: #ebebeb;
}
// JS:
var sortlists = $('.sortable-list').sortable({
tolerance: 'pointer',
connectWith: '.sortable-list',
placeholder: 'sortable-placeholder sortable-list-item'
});
Run Code Online (Sandbox Code Playgroud)
寻找确认这是jQuery UI的错误或对我的CSS的更正,但我没有看到任何.
更新1: …
我正在尝试将一些函数绑定到click事件.这是我得到的:
var Foreground = Backbone.Marionette.Layout.extend({
el: $('body'),
events: {
'click': 'tryResetContextMenu onClickDeselectCollections'
},
// Whenever the user clicks on any part of the UI that isn't a multi-select item, deselect the multi-select items.
onClickDeselectCollections: function (event) {
console.log("deselect collections");
var isMultiSelectItem = $(event.target).hasClass('multiSelectItem');
var isChildMultiSelectItem = $(event.target).closest('.multiSelectItem').length > 0;
if (!isMultiSelectItem && !isChildMultiSelectItem) {
this.deselectCollections();
}
},
// If a click occurs and the default isn't prevented, reset the context menu groups to hide it.
// Child elements will call …Run Code Online (Sandbox Code Playgroud) 我有:
const fs = require('fs');
const packageConfig = JSON.parse(fs.readFileSync('./package.json'));
const { jspm: { configFile: jspmConfigFile }} = packageConfig;
Run Code Online (Sandbox Code Playgroud)
但它packageConfig的价值configFile可能是不确定的.在这种情况下,我想默认jspmConfigFile到'config.js
是否可以在不创建扩展packageConfig对象的情况下执行此操作?
我意识到我可以这样做:
const { jspm: { configFile: jspmConfigFile }} = _.extend({
jspm: { config: 'config.js'}
}, packageConfig);
Run Code Online (Sandbox Code Playgroud)
但这只是为了通过解构获得合理的默认值而非常混乱.
我错过了什么?
我有一个像这样的对象:
const foo = {
bar: 'bar'
};
Run Code Online (Sandbox Code Playgroud)
我想修改它,以便如果有人尝试访问不存在的属性,则会抛出错误而不是返回未定义。
例如,
const baz = foo.baz;
// Error: Property 'baz' does not exist on object 'foo'
Run Code Online (Sandbox Code Playgroud)
这可能吗?
javascript ×4
c# ×3
css ×2
jquery ×2
linq ×2
wix ×2
.net ×1
backbone.js ×1
ecmascript-6 ×1
hashset ×1
html ×1
jquery-ui ×1
marionette ×1
refactoring ×1
resharper ×1
routing ×1
width ×1