Tag: C#的

投到int与地板

这些有什么区别: float foo1 = (int)(bar / 3.0); float foo2 = floor(bar / 3.0); 据我所知,这两个案件都有同样的结果。 编译代码有没有区别?

这个typedef语句是什么意思?

在一个C ++参考页面,他们提供了一些typedef的例子,我试图理解他们的意思。 // simple typedef typedef unsigned long mylong; // more complicated typedef typedef int int_t, *intp_t, (&fp)(int, mylong), arr_t[10]; 所以简单的typedef(第一个声明)我明白了。 但是他们在第二个(下面重复)中声明了什么? typedef int int_t, *intp_t, (&fp)(int, ulong), arr_t[10]; 特别是(&fp)(int, mylong)是什么意思?

使用shared_ptr的例子?

嗨,我今天问了一个问题, 如何在同一个向量数组中插入不同types的对象 ,我的代码在这个问题是 gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { ….. …… virtual void Run() { //A virtual function } }; class ANDgate :public gate {….. ……. void Run() { //AND version of Run } }; class ORgate […]

Linq代码来select一个项目

我发现自己写了很多这样的代码来select一个匹配的项目 var item = (from x in Items where x.Id == 123 select x).First(); 有没有更干净的方法呢,还是这样简洁呢? 编辑:应该说“使用linq语法更清洁的方式”。 我已经意识到了lambda语法,它开始看起来像这是实际上唯一的方法。 虽然我收到了一些有用的信息,所以感谢大家的回复。

如何将UserControl放入Visual Studio工具箱

我在我的项目中做了一个用户控件,在构build项目之后,我需要将它放在我的工具箱中,并将其用作通用控件。 但我不能。 UserControl是在我的项目命名空间,我试图在右键菜单中Choose Item ,但我没有find一种方法来添加它。

Debug.Assert与exception抛出

我已经阅读了大量关于如何以及何时使用断言的文章 (以及发布在StackOverflow上的其他类似问题),并且我很好地理解了它们。 但是,我不明白什么样的动机应该促使我使用Debug.Assert而不是抛出一个普通的exception。 我的意思是,在.NET中,对失败断言的默认响应是“停止世界”并向用户显示一个消息框。 虽然这种行为可以修改,但是我觉得这样做是非常烦人和多余的,而我却可以抛出一个合适的例外。 这样,我就可以在抛出exception之前轻松地将错误写入应用程序的日志,而且,我的应用程序不一定会冻结。 那么,为什么我应该使用Debug.Assert而不是普通的exception呢? 在不应该的地方放置一个断言只会引起各种各样的“不需要的行为”,所以在我看来,通过使用断言而不是抛出exception,我实在没有获得任何东西。 你是否同意我的观点?或者我在这里错过了什么? 注意:我完全理解“理论上”(debuggingvs释放,使用模式等)有什么区别,但就我所见,我最好抛出exception而不是执行断言。 因为如果在产品发布中发现错误,我仍然希望“断言”会失败(毕竟,“开销”是可笑的小),所以我会更好抛出一个exception。 编辑:我看到它的方式,如果断言失败,这意味着应用程序进入某种损坏,意外的状态。 那为什么我要继续执行? 如果应用程序在debugging版本或发行版本上运行,则无关紧要。 两者都是一样的

在C ++中的逗号运算符的不同行为与返回?

这(注意逗号运算符 ): #include <iostream> int main() { int x; x = 2, 3; std::cout << x << "\n"; return 0; } 输出2 。 但是,如果您使用逗号运算符return ,则: #include <iostream> int f() { return 2, 3; } int main() { int x; x = f(); std::cout << x << "\n"; return 0; } 输出3 。 为什么逗号运算符的行为与return有所不同?

C ++中“using”声明的范围是什么?

我在C ++中使用'using'声明将std :: string和std :: vector添加到本地名称空间(以节省不必要的input“std ::”)。 using std::string; using std::vector; class Foo { /*…*/ }; 这个声明的范围是什么? 如果我在标题中这样做,它会注入这些“使用”声明到每个包含头文件的cpp文件吗?

C#中的工厂模式:如何确保对象实例只能由工厂类创build?

最近我一直在考虑保护我的一些代码。 我很好奇如何确保一个对象不能直接创build,但只能通过工厂类的一些方法。 让我们说我有一些“业务对象”类,我想确保这个类的任何实例将有一个有效的内部状态。 为了实现这一点,我需要在创build一个对象之前执行一些检查,可能是在它的构造函数中。 这一切都可以,直到我决定让这个检查成为业务逻辑的一部分。 那么,我怎样才能安排一个业务对象,只能通过业务逻辑类中的某种方法创build,而不能直接创build? 使用C ++的旧“好友”关键字的第一个自然愿望将与C#不兼容。 所以我们需要其他的select 我们来看一个例子: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public MyBusinessObjectClass CreateBusinessObject (string myProperty) { // Perform some check on myProperty if (true /* check is okay */) return new […]

有条件的Linq查询

我们正在使用日志查看器。 使用将有select按用户,严重程度等进行过滤。在Sql的日子里,我会添加到查询string,但我想用Linq做到这一点。 我怎样才能有条件地添加where子句?