是否有可用的工具可以扫描代码并检查可能的空引用异常,即在调用方法/访问属性之前没有代码检查null?
我最近做了一个UserControl,花了很长时间,因为我不得不使用自定义依赖属性等等...
无论如何,它只是一堆3个控件:TextBox,Popup with Hierarchical Tree.
现在我意识到我可能只能写一个ControlTemplate.那么使用UserControl有什么好处?
我需要将pdf转换为字节数组,反之亦然.
谁能帮我?
这就是我转换为字节数组的方式
public static byte[] convertDocToByteArray(String sourcePath) {
byte[] byteArray=null;
try {
InputStream inputStream = new FileInputStream(sourcePath);
String inputStreamToString = inputStream.toString();
byteArray = inputStreamToString.getBytes();
inputStream.close();
} catch (FileNotFoundException e) {
System.out.println("File Not found"+e);
} catch (IOException e) {
System.out.println("IO Ex"+e);
}
return byteArray;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下代码将其转换回文档,则会创建pdf.但是它说'Bad Format. Not a pdf'.
public static void convertByteArrayToDoc(byte[] b) {
OutputStream out;
try {
out = new FileOutputStream("D:/ABC_XYZ/1.pdf");
out.close();
System.out.println("write success");
}catch (Exception e) {
System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud) 由于我不知道的原因,Xcode无法从服务器下载文档集.
有没有办法从URL手动下载这些文档集,然后让Xcode的核心参考库解压缩它们?
编辑:
找到我要找的东西:
http://learning2code.blogspot.com/2008/05/download-xcode-docsets-to-your-hard.html
我正在读的关于Erlang的书在它的后面有练习,一个是重新创建列表:追加功能.
我可以简单地使用++运算符来做这个,但这不是很慢吗?我认为练习的重点是使用我编写的列表操作来完成.
到目前为止,我能想到的唯一方法是执行以下操作:
concat([], _, Results)->
Results;
concat(_, [], Results)->
Results;
concat([Ah|At],B,Results) ->
concat(At,B,[Ah|Results]).
Run Code Online (Sandbox Code Playgroud)
但我知道这是不正确的......
关于如何做到这一点的任何建议?
编辑:澄清问题,这是一个示例输入和输出:
输入:[[1,2,3],[],[4,5],[6]]输出:[1,2,3,4,5,6]
工作一段时间后,我想出了这个代码:
append([A|[B|[T|[]]]]) ->
append([A++B|T]);
append([H|T]) ->
H++T.
Run Code Online (Sandbox Code Playgroud)
但是,这仅适用于列表大小为3的情况.如何修改此值以使其适用于任意给定数量的随机大小的列表?
我明白为什么会这样.父树型视图包括其子女的边界框的边框,所以当我将滑鼠移到一个树型视图,所有的父母在树上也鼠标滑过.我应该使用IsMouseOver以外的东西吗?
Team Foundation Server(TFS)2005和2008都会在文件分支和合并时丢失历史记录(签入+注释).因此,例如,如果分支中的更改然后合并回根分支,则分支中所做的任何更改都不会在根分支中可见.历史中唯一可见的事情表明发生了合并.
有没有人知道是否有一个选项可以设置为保留历史记录,或者以不同的方式进行合并以保留历史记录?
我想编写一个以编程方式分配Fogbugz案例的应用程序,我将如何实现这一目标?在以下任何情况下,是否可以实现此目的:
用户在我的应用程序的输入字段中输入文本和FogBugz的报告是在"说明"字段中填入用户输入文本浏览器中打开
fogbugz报告被分配给应用程序中的指定用户,而浏览器甚至没有被打开,即报告直接存储在数据库中.
我打算将默认值添加到其他字段中,因此我假设将该文本添加到"note"字段的过程相同.
为什么面向对象的数据库失败?
我发现令人惊讶的是:
foo bar = new foo();
bar.saveToDatabase();
Run Code Online (Sandbox Code Playgroud)
迷失方向:
foo bar = new foo();
/* write complicated code to extract stuff from foo */
/* write complicated code to write stuff to database */
Run Code Online (Sandbox Code Playgroud)
相关问题:
我在某些地方看到过这种代码:
public event SomeEventHandler SomeEvent = (s, e) => { };
Run Code Online (Sandbox Code Playgroud)
这是一种推荐的做事方式吗?它解决了什么,是否有任何值得注意的副作用?我还需要做空检查吗?或者这正是我不必再做的了?垃圾收集仍然可以正常工作吗?
例如:
private PropertyChangedEventHandler propertyChanged;
private readonly object propertyChangedLock = new object();
public event PropertyChangedEventHandler PropertyChanged
{
add
{
lock (propertyChangedLock)
propertyChanged += value;
}
remove
{
lock (propertyChanged)
propertyChanged -= value;
}
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler;
lock (propertyChangedLock)
handler = propertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
Run Code Online (Sandbox Code Playgroud)
我可以将第一行更改为:
private PropertyChangedEventHandler propertyChanged = (s, e) => { };
Run Code Online (Sandbox Code Playgroud)
然后跳过OnPropertyChanged方法中的空值检查?如果我然后跳过空检查我可以跳过锁吗?如果是这样会给我这个:
protected void OnPropertyChanged(string propertyName) …Run Code Online (Sandbox Code Playgroud)