C#6.0刚刚发布,并且有一个新的不错的小功能,我真的很想在JavaScript中使用它.他们被称为Null条件运算符.这些使用?.
或?[]
语法.
这些操作基本上允许您null
在尝试访问属性之前检查您获得的对象.如果对象是null
,那么您将获得null
属性访问的结果.
int? length = customers?.Length;
Run Code Online (Sandbox Code Playgroud)
所以这里int
可以为null,并且如果customers
为null 则将采用该值.更好的是你可以链接这些:
int? length = customers?.orders?.Length;
Run Code Online (Sandbox Code Playgroud)
我不相信我们可以用JavaScript做到这一点,但我想知道做类似事情的最好方法是什么.通常我发现链接if
块难以阅读:
var length = null;
if(customers && customers.orders) {
length = customers.orders.length;
}
Run Code Online (Sandbox Code Playgroud) 这最近打击了我正在进行的一个项目.大多数人都熟悉属性递归:
public int Test
{
get { return this.test; }
set { this.Test = value; }
}
private int test;
Run Code Online (Sandbox Code Playgroud)
你不小心把一个大写的T放在这个setter中,你已经把自己打开了StackoverflowException
.更糟糕的是,如果你没有定义它,通常visual studio会自动纠正套管,使你进入无效状态.
我最近在构造函数中做了类似的事情:
public TestClass(int test)
{
this.Test = Test;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,你没有得到StackOverflowException,现在你遇到了编程错误.在我的情况下,这个值被传递给一个WebService,而后者使用了一个默认值(不是0),这导致我错过了我错误地分配它的事实.集成测试全部通过,因为该服务没有说
"嘿,你忘记了这个非常重要的领域!"
我可以采取哪些措施来避免这种行为?我一直被建议不要像以下那样定义变量,我个人不喜欢它们,但我想不出任何其他选择:
private int _test;
private int mTest;
Run Code Online (Sandbox Code Playgroud)
编辑
通常我可以想到的下划线或m前缀不合适的原因是:
If you're revisiting this question I've moved all the updates to the bottom so it actually reads better as a question.
I've got a bit of a strange problem handling browser events using D3
. Unfortunately this sits in quite a large application, and because I'm completely lost on what the cause is I'm struggling to find a small reproduceable example so I'm going to provide as much hopefully useful information as I can.
所以我的问题是click
某些DOM元素似乎没有可靠地触发事件.我有两组不同的元素填充 …
有谁知道Windows 8用于文件传输进度的新"花式"文件传输进度条是否可以通过某些API(最好是C#)获得?我可以在我们的应用程序中考虑一些有用的地方,但似乎无法确定它是消耗品还是仅在Windows内部可用.
编辑
我现在的答案包括我写的WPF实现,你可以在你自己的项目中使用:)
我正在尝试将DataGridView中的单独ComboBox单元绑定到自定义类,并继续收到错误
DataGridViewComboBoxCell值无效
我现在正在将单元格的数据源分配给IList<ICustomInterface>
我所拥有的词典.但是,在设置数据源时,ComboBoxCell
未设置索引,因此选择了无效值.
我试图弄清楚如何让它选择一个真正的值,例如列表中的第0个项目,它已被删除此错误,或找到解决问题的另一种方法.有人有什么建议吗?
我希望有人可以帮助我.我有一个COM需要捕获的特定异常,然后尝试做其他事情,其他所有都应该被忽略.我的错误消息是异常:
System.Runtime.InteropServices.COMException(0x800A03EC):Microsoft Office Excel无法访问文件"C:\ test.xls".有几个可能的原因:
所以我最初的尝试是
try
{
// something
}
catch (COMException ce)
{
if (ce.ErrorCode == 0x800A03EC)
{
// try something else
}
}
Run Code Online (Sandbox Code Playgroud)
然而,我读了一个编译器警告:
警告22与积分常数的比较是无用的; 常量超出了'int'类型的范围..... ExcelReader.cs 629 21
现在我知道0x800A03EC是HResult,我刚看了MSDN并阅读:
HRESULT是一个32位值,分为三个不同的字段:严重性代码,设施代码和错误代码.严重性代码指示返回值是表示信息,警告还是错误.设施代码标识负责该错误的系统区域.
所以我的最终问题是,我如何确保捕获该特定异常?或者我如何从HResult获取错误代码?
提前致谢.
我正在尝试按照本教程将d3.js SVG Vis转换为PNG服务器端(使用Node.js)http://eng.wealthfront.com/2011/12/converting-dynamic-svg-to- PNG-with.html
链接到完整代码: https ://gist.github.com/1509145
但是,每当我尝试发出加载页面的请求时,我都会收到此错误
/Users/me/Node/node_modules/jsdom/lib/jsdom.js:171
features = JSON.parse(JSON.stringify(window.document.implementation._fea
^
TypeError: Cannot read property 'implementation' of undefined
at exports.env.exports.jsdom.env.processHTML (/Users/dereklo/Node/node_modules/jsdom/lib/jsdom.js:171:59)
at Object.exports.env.exports.jsdom.env (/Users/dereklo/Node/node_modules/jsdom/lib/jsdom.js:262:5)
at Server.<anonymous> (/Users/dereklo/Node/Pie/pie_serv.js:26:9)
at Server.EventEmitter.emit (events.js:91:17)
at HTTPParser.parser.onIncoming (http.js:1785:12)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23)
at Socket.socket.ondata (http.
Run Code Online (Sandbox Code Playgroud)
有人知道为什么会这样吗?我已经安装了jsdom模块,所以我真的不知道是什么导致了这些问题...提前感谢.
编辑
这是我用来实现node.js服务器的代码.我的最新一期是在这个来源之下......
var http = require('http'),
url = require('url'),
jsdom = require('jsdom'),
child_proc = require('child_process'),
w = 400,
h = 400,
__dirname = "Users/dereklo/Node/pie/"
scripts = ["/Users/dereklo/Node/pie/d3.min.js",
"/Users/dereklo/Node/pie/d3.layout.min.js",
"/Users/dereklo/Node/pie/pie.js"],
//scripts = ["./d3.v2.js",
// …
Run Code Online (Sandbox Code Playgroud) 我正在做一些有点奇怪的东西jest
用于测试我正在写一些东西到磁盘.如果我watch
在jest中使用标志,那么我(很明显)发现每次我向磁盘写入内容时,测试会再次重新启动.
我目前没有任何配置,我已经看过文档,但我真的不清楚我需要使用哪个选项来抑制观看特定文件.我相信我可以看到从代码覆盖中排除代码,测试执行而不是实际观察者的选项.
在我的情况下,我有一个这样的设置,我只想抑制我的结果目录:
__tests__
__snapshots__
(由jest创建)results
(由我和要创建的目录创建)有人能说清楚这样做吗?
我相信必须有一个更好的方法来做到这一点.我正在尝试对Flags枚举进行计数操作.在我尝试所有可能的值并计算成功的AND操作之前.
例如
[Flags]
public enum Skills
{
None = 0,
Skill1 = 1,
Skill2 = 2,
Skill3 = 4,
Skill4 = 8,
Skill5 = 16,
Skill6 = 32,
Skill7 = 64,
Skill8 = 128
}
public static int Count(Skills skillsToCount)
{
Skills skill;
for (int i = 0; i < SkillSet.AllSkills.Count; i++)
{
skill = SkillSet.AllSkills[i];
if ((skillsToCount & skill) == skill && skill != Skills.None)
count++;
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
我确信必须有更好的方法来做到这一点,但必须患有精神障碍.谁能建议更好的解决方案?
我最近遇到了一个界面,它只定义了一个像这样的setter:
public interface IAggregationView
{
DataTable SetSiteData { set; }
}
Run Code Online (Sandbox Code Playgroud)
我质疑这一点,并且相信这是微软为WebPart设计(针对SharePoint)所倡导的做法之一.实际上,这个例子是从他们的例子中直接复制的.
我认为这是一个糟糕的模式,我不明白为什么有人应该能够设置一个值,然后再也无法再读它了,我相信一个二传手应该总是伴随着一个吸气剂(但不一定是其他方式).
我想知道是否有人可以解释只有一个二传手的好处,为什么微软可能会在这种情况下建议它,以及它是否真的是一个好的模式?
c# ×6
javascript ×3
d3.js ×2
com ×1
datagridview ×1
enums ×1
events ×1
jestjs ×1
node.js ×1
properties ×1
recursion ×1
windows-8 ×1
winforms ×1
wpf ×1