Tag: C#的

如果(flag == 0)或if(0 == flag),哪一个执行速度会更快?

面试问题: if (flag==0)或if (0==flag) ,哪一个执行得更快? 为什么?

Java或C#中exceptionpipe理的最佳实践

我坚持决定如何处理我的应用程序中的exception。 很多,如果我的exception问题来自1)通过远程服务访问数据或2)反序列化JSON对象。 不幸的是,我不能保证这些任务(切断networking连接,不受我控制的格式错误的JSON对象)的成功。 因此,如果我确实遇到一个exception,我只需在函数中捕获它并返回给调用者的FALSE。 我的逻辑是所有的呼叫者真的关心的是如果任务是成功的,而不是为什么它不成功。 下面是一些典型方法的示例代码(用JAVA) public boolean doSomething(Object p_somthingToDoOn) { boolean result = false; try{ // if dirty object then clean doactualStuffOnObject(p_jsonObject); //assume success (no exception thrown) result = true; } catch(Exception Ex) { //don't care about exceptions Ex.printStackTrace(); } return result; } 我认为这种方法没问题,但是我真的很好奇,知道pipe理exception的最佳实践是什么(我真的应该把一个exception从一个调用堆栈中调出来)。 总结关键问题: 可以只捕捉exception,但不要冒泡或正式通知系统(通过日志或通知给用户)? 什么最佳实践是有exception,不会导致所有需要一个try / catch块? 跟进/编辑 感谢所有的反馈意见,在线查找exceptionpipe理的一些优秀资源: exception处理的最佳实践| O'Reilly媒体 .NET中的exception处理最佳实践 […]

如何转发声明名称空间std中的模板类?

#ifndef __TEST__ #define __TEST__ namespace std { template<typename T> class list; } template<typename T> void Pop(std::list<T> * l) { while(!l->empty()) l->pop(); } #endif 并在我的主要使用该function。 我得到错误。 当然,我知道有更多的模板参数为std::list (分配器,我认为)。 但是,这是重要的。 我是否必须知道模板类的完整模板声明才能够转发声明? 编辑:我以前没有使用指针 – 这是一个参考。 我会用指针试一试。

作为const引用的Lambda捕获?

是否有可能通过在lambdaexpression式中的const引用捕获? 我想要下面标记的任务失败,例如: #include <cstdlib> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string strings[] = { "hello", "world" }; static const size_t num_strings = sizeof(strings)/sizeof(strings[0]); string best_string = "foo"; for_each( &strings[0], &strings[num_strings], [&best_string](const string& s) { best_string = s; // this should fail } ); return 0; } 更新:由于这是一个老问题,如果C ++ 14中有设施来帮助解决这个问题,可能会更新它。 […]

是可空types的引用types?

当我声明一个int可为空 int? i=null; i在这里成为一个参考types?

Roslyn语法节点是否被重用?

我一直在看Roslyn CTP ,虽然它解决了Expression树API的类似问题,但两者都是不可变的,但Roslyn以一种完全不同的方式做到这一点: Expression节点没有对父节点的引用,使用ExpressionVisitor进行修改,这就是为什么大部分可以被重用。 SyntaxNode ,Roslyn的SyntaxNode有一个对父节点的引用,所以所有的节点都有效地成为一个不可能重用的块。 像Update , ReplaceNode等方法被提供来进行修改。 这到底在哪里? Document ? Project ? ISolution ? API促进树的逐步改变(而不是一个button),但是每个步骤都做了一个完整的副本? 他们为什么做出这样的select? 我有一些有趣的技巧吗?

默认string初始化:NULL还是空?

我总是把我的string初始化为NULL,并认为NULL意味着缺less一个值,而“”或String.Empty是一个有效的值。 我已经看到了更多的例子CodeGo.net,其中String.Empty被认为是默认值或代表没有价值。 这让我觉得奇怪,在c#中添加了新的可空types,好像我们正在用string向后迈进,而不使用NULL来表示“无值”。 你使用什么作为默认的初始化器,为什么? 编辑:基于这个答案,我进一步思考 避免error handling如果值不能为空,为什么它首先被设置为NULL ? 也许最好是在发生错误的地方找出错误,而不是在整个代码库中覆盖错误? 避免空值检查如果你已经厌倦了在代码中进行空值检查,抽象空检查不是更好吗? 也许包装(或扩展!)的string方法,使他们安全的NULL ? 如果你经常使用String.Empty而null发生了什么事,它会进入你的系统,你会开始添加NULL检查吗? 我不禁回到了懒惰的意见。 如果你在他的数据库中使用了''而不是null ,那么任何DBA都会打你九招愚蠢的。 我认为在编程中也应用了相同的原则,并且应该有人使用String.Empty而不是NULL来代表没有价值的人。 相关问题 在C#中,我应该使用string.Empty或String.Empty或“”? String.Empty和“”之间的区别是什么 空或空string表示表列没有数据?

使用C + +而不是Objective-C?

我想编写使用C ++和Cocoa框架的应用程序,因为Apple不支持Carbon 64位。 C ++似乎是在Linux和Windows上实现的相当漂亮,但在Mac OS X上,似乎需要额外的Apple特定代码片段(如Obj-C包装器)。 也似乎苹果迫使开发人员写Objective-C而不是C ++,虽然我可能是错的。 我试图find在Mac上编写代码的path,这将很容易保持跨平台。 不得不在Linux / Windows的C ++中编写代码,然后在Objective-C中重写大部分代码将是非常低效的。 有没有一种方法来编写C ++代码,将来会支持并在Xcode中支持? 另外,如果这是可能的,我将如何在Xcode中混合使用C ++和Objective-C? 谢谢。

我怎样才能得到“复制到输出目录”以使用unit testing?

在执行testing之前构buildunit testing项目时,将testing输出复制到TestResults文件夹,然后执行testing。 我遇到的问题是不是Debug / bin目录中的所有文件都复制到TestResults项目中。 我怎样才能得到一个复制到Debug / bin目录的文件也被复制到TestResults文件夹?

当char * x指向一个值为“hello”的string时,如何在gdb中设置条件断点?

我可以指定,当char* x指向值为"hello"的string时,我希望gdb在第x行中断? 如果是的话,怎么样?