Tag: C#的

如何在C / Objective-C中跨越多行分割string文字?

我有一个很长的SQLite查询: const char *sql_query = "SELECT statuses.word_id FROM lang1_words, statuses WHERE statuses.word_id = lang1_words.word_id ORDER BY lang1_words.word ASC"; 我怎样才能把它分成几行以便阅读? 如果我做到以下几点: const char *sql_query = "SELECT word_id FROM table1, table2 WHERE table2.word_id = table1.word_id ORDER BY table1.word ASC"; 我收到一个错误。 有没有办法在多行写查询?

为什么f(i = -1,i = -1)未定义的行为?

我正在阅读评估违规的顺序 ,他们给我一个困惑的例子。 1)如果标量对象的副作用相对于同一个标量对象上的另一个副作用未被sorting,则行为是不确定的。 // snip f(i = -1, i = -1); // undefined behavior 在这种情况下, i是一个标量对象 ,这显然意味着 算术types(3.9.1),枚举types,指针types,成员types指针(3.9.2),std :: nullptr_t和这些types的cv限定版本(3.9.3)统称为标量types。 在这种情况下,我不明白这个陈述是如何含糊不清的。 在我看来,无论是第一个还是第二个参数先评估, i最终为-1 ,两个参数也是-1 。 有人可以澄清? UPDATE 我非常感谢所有的讨论。 到目前为止,我很喜欢@ harmic的回答,因为它暴露了定义这个陈述的陷阱和错综复杂的问题,尽pipe它乍看之下多么直截了当。 @ acheong87指出了使用引用时出现的一些问题,但是我认为这与这个问题的不确定副作用方面是正交的。 概要 由于这个问题引起了很大的关注,我将总结一下主要的观点和答案。 首先,请允许我进行一个小小的分析,指出“为什么”可以有密切相关但意义不同的含义,即“为什么”,“ 为什么 ”,“为了什么目的 ”。 我将把他们所说的“为什么”的那些含义的答案分组。 为什么导致 这里的主要答案来自保罗·德雷珀 ( Paul Draper) , 马丁·J ( Martin J)提供了一个类似但不是广泛的答案。 Paul Draper的答案归结为: 这是未定义的行为,因为它没有定义什么行为。 就解释C ++标准所说的问题而言,答案总的来说非常好。 它也解决了一些相关的UB案例,如f(++i, […]

制定一个私人的方法公开testing它…好主意?

版主注意: 这里已经有39个答案了(部分已经被删除) 在发布答案之前,请考虑是否可以在讨论中添加有意义的内容。 你很可能只是重复别人已经说过的话。 我偶尔会发现自己需要在公开课上做一些私人的方法,只是为了写一些unit testing。 通常这是因为该方法包含在类中的其他方法之间共享的逻辑,并且它自己testing逻辑更加整洁,或者另一个原因可能是我想要testing同步线程中使用的逻辑,而不必担心线程问题。 其他人发现自己这样做,因为我不喜欢这样做? 我个人认为奖金大于公开方法的问题,而这些方法并不真正提供课外的任何服务。 UPDATE 感谢大家的回答,似乎激起了人们的兴趣。 我认为普遍的共识是testing应该通过公共API来进行,因为这是一个课程将被使用的唯一途径,我也同意这一点。 我上面提到的上述情况在哪里我会这样做是罕见的情况下,我认为这样做的好处是值得的。 然而,我可以看到每个人都指出,它永远不会真的发生。 考虑到这一点,我认为改变你的代码来适应testing是一个坏主意 – 毕竟,我认为testing是一种支持工具,如果你愿意,改变一个系统来“支持一个支持工具”是公然的不好的做法。

如果我重写它,我可以调用基类的虚函数吗?

假设我有Foo和Bar这样的课程: class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here… std::cout << y << std::endl; } }; 正如在代码中注释的,我希望能够调用我重写的基类的函数。 在Java中有super.funcname()语法。 这是可能的C + +?

C#“内部”访问修饰符进行unit testing时

我是新的unit testing,我试图找出是否应该开始使用更多的“内部”访问修饰符。 我知道,如果我们使用'internal'并设置程序集variables'InternalsVisibleTo',我们可以testing我们不想从testing项目中公开声明的函数。 这使我认为我应该总是使用“内部”,因为至less每个项目(应该?)都有自己的testing项目。 你们能告诉我为什么我不应该这样做吗? 我应该什么时候使用“私人”?

如何避免“如果”链?

假设我有这个伪代码: bool conditionA = executeStepA(); if (conditionA){ bool conditionB = executeStepB(); if (conditionB){ bool conditionC = executeStepC(); if (conditionC){ … } } } executeThisFunctionInAnyCase(); 函数executeStepX应该被执行当且仅当前一个成功。 无论如何,应该在最后调用executeThisFunctionInAnyCase函数。 我是一个编程的新手,所以对于一个非常基本的问题感到抱歉:有没有一种方法(例如C / C ++)来避免那些产生这种“代码金字塔”的链,代价是代码长可读性? 我知道,如果我们可以跳过executeThisFunctionInAnyCase函数调用,代码可以简化为: bool conditionA = executeStepA(); if (!conditionA) return; bool conditionB = executeStepB(); if (!conditionB) return; bool conditionC = executeStepC(); if (!conditionC) return; 但约束是executeThisFunctionInAnyCase函数调用。 break语句能以某种方式使用吗?

声明一个const数组

是否有可能写类似于以下的东西? public const string[] Titles = {"German", "Spanish", "Corrects", "Wrongs"};

.NET / C# – 将char 转换为string

将char[]转换为string的正确方法是什么? 来自一个字符数组的ToString()方法并不能解决这个问题。

如何将项目添加到List <T>的开头?

我想添加一个“select一个”选项到绑定到List<T>的下拉列表中。 一旦我查询List<T> ,如何将我的初始Item (不是数据源的一部分)添加为List<T>中的FIRST元素? 我有: // populate ti from data List<MyTypeItem> ti = MyTypeItem.GetTypeItems(); //create initial entry MyTypeItem initialItem = new MyTypeItem(); initialItem.TypeItem = "Select One"; initialItem.TypeItemID = 0; ti.Add(initialItem) <!– want this at the TOP! // then DropDownList1.DataSource = ti;

WPF TextBlock中的自动垂直滚动条?

我在WPF中有一个TextBlock 。 我写了很多行,远远超过了它的垂直高度。 我期望一个垂直滚动条自动出现,但事实并非如此。 我试图在“属性”窗格中查找滚动条属性,但找不到一个属性。 一旦其内容超过其高度,我怎样才能使自动为我的TextBlock创build垂直滚动条? 澄清:我宁愿从devise师那里做,而不是直接写给XAML。