Tag: string concatenation

为什么连接SQL字符串是一个坏主意?

我已经读过这样连接SQL字符串是个坏主意: cmd.CommandText = “Insert INTO workers Values (” + User.Identity.Name + “,” + WorkerName.Text + “,” + GetUniqueWorkerKey() + “);”; 所以推荐的方式是: cmd.CommandText = “Insert INTO workers Values (@Username, @WorkerName, @WorkerKey)”; cmd.Parameters.AddWithValue(“@Username”, User.Identity.Name); cmd.Paramters.AddWithValue(“@WorkerName”, TheWorkerNameYouPassedToThisMethod); 自从我读到它以来,我一直在避免连接SQL字符串,但我从未真正知道不这样做的理由。 AddWithValue()方法最终不会在场景后面执行相同的字符串连接吗? 也许该方法剥离特殊字符并将字符转换为html实体以防止sql注入,但我可以在连接我的SQL之前完成所有这些,我也得到相同的效果,不是吗? 或者是否有其他原因不练习SQL的字符串连接?

如何使用yield return和recursion获取每个字母组合?

我有几个字符串列表,从几十个可能的列表: 1: { “A”, “B”, “C” } 2: { “1”, “2”, “3” } 3: { “D”, “E”, “F” } 这三个仅作为示例选择,并且用户可以从具有不同数量的元素的数十个类似列表中进行选择。 再举一个例子,这对用户来说也是一个非常有效的选择: 25: { } // empty 4: { “%”, “!”, “$”, “@” } 16: { “I”, “a”, “b”, “Y” } 8: { “)”, “z”, “!”, “8” } 我想要做的是在保持列表的“顺序”的同时获得每个字符串组合。 换句话说,假设我们正在查看第一个列表,第一个组合将是A1D ,然后是A1E ,然后是A1F ,然后是B1D ,然后是B1E ,依此类推。 到目前为止,我已经编写了这个递归算法: […]

为字符串添加null时为什么没有exception?

为什么不抛出exception不理解,obj为null object obj = null; Console.WriteLine(“Hello World ” + obj);

C#编译时字符串常量连接

C#是否对常量字符串连接进行任何编译时优化? 如果是这样,我的代码如何通过编写来利用这个? 示例:这些在运行时如何比较? Console.WriteLine(“ABC” + “DEF”); const string s1 = “ABC”; Console.WriteLine(s1 + “DEF”); const string s1 = “ABC”; const string s2 = s1 + “DEF”; Console.WriteLine(s2);

C#:最可读的字符串连接。 最佳实践

可能重复: 我该如何连接字符串? 当性能不重要时,有几种方法可以在日常任务中连接字符串。 result = a + “:” + b result = string.Concat(a, “:”, c) result = string.Format(“{0}:{1}”, a, b); StringBuilder approach ……? 您更喜欢什么?为什么效率无关紧要,但您想保持代码最符合您的口味?

C#中的String.Join性能问题

我一直在研究一个提交给我的问题:如何编写一个函数,它接受一个字符串作为输入,并返回一个字符串之间有空格的字符串。 编写该函数是为了在每秒调用数千次时优化性能。 我知道.net有一个名为String.Join的函数,我可以将空格字符作为分隔符与原始字符串一起传递给它。 除非使用String.Join , String.Join我可以使用StringBuilder类在每个字符后追加空格。 完成此任务的另一种方法是声明一个包含2 * n-1个字符的字符数组(您必须为空格添加n-1个字符)。 可以在循环中填充字符数组,然后将其传递给String constructor 。 我编写了一些.net代码,每个代码使用参数”Hello, World”运行每个算法一百万次”Hello, World”并测量执行所需的时间。 方法(3)比(1)或(2)快得多。 我知道(3)应该非常快,因为它避免创建任何额外的字符串引用被垃圾收集,但在我看来,内置的.net函数,如String.Join应该会产生良好的性能。 为什么使用String.Join要比手工工作慢得多? public static class TestClass { // 491 milliseconds for 1 million iterations public static string Space1(string s) { return string.Join(” “, s.AsEnumerable()); } //190 milliseconds for 1 million iterations public static string Space2(string s) { if (s.Length […]

以编程方式合并两个JSON对象

我在这里有两个JSON对象,通过Google Search API生成。 这些对象的URL可以在下面找到。 http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=hello%20world&rsz=large http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q =你好%20world&RSZ =大&开始= 8 如您所见,第一个URL返回前八个结果,而第二个返回后八个结果。 我不想单独检查这些结果,而是想以编程方式将它们合并到一个JSON对象中,并将它们作为前16个结果传递给它们。 我用几个非常简单的JSON对象尝试过这个,但Google返回的内容仍然比我的头脑还要高,所以我希望能帮助你做一些这样的事情。 据我所知,并不是因为谷歌的服务条款将两个对象合并为一个,只有这些总是通过两个结果(他们会)。 有些朋友指出了能够做这些事情的自动化工具的方向,但我还没有找到这样的工具。 我目前在ASP.NET中工作,所以C#或VB.NET代码很棒,但我有点语言独立,所以任何语言的任何帮助都将非常感激。 在做这样的事情时,任何人都可以提供任何帮助和/或建议吗? 编辑:这些结果最终将被保存到数据库中,因此任何服务器端方法都很棒,即使这意味着将它们直接放入表中以便稍后处理。

字符串连接在C#中不安全,需要使用StringBuilder吗?

我的问题是: C#中的字符串连接是否安全? 如果字符串连接导致意外错误,并且使用StringBuilder替换该字符串连接会导致这些错误消失,那可能表示什么? 背景:我正在开发一个小命令行C#应用程序。 它接受命令行参数,执行稍微复杂的SQL查询,并将大约1300行数据输出到格式化的XML文件中。 我的初始程序总是在调试模式下正常运行。 但是,在发布模式下,它将获得大约第750个SQL结果,然后因错误而死亡。 错误是无法读取某一列数据,即使通过SqlDataReader对象的Read()方法刚刚返回true也是如此。 通过对代码中的所有操作使用StringBuilder来解决此问题,之前已经存在“string1 + string2”。 我不是在谈论SQL查询循环中的字符串连接,其中StringBuilder已经在使用中。 我在谈论代码中较早的两个或三个短字符串变量之间的简单连接。 我的印象是C#足够聪明,可以通过添加几个字符串来处理内存管理。 我错了吗? 或者这是否表明其他一些代码问题?

我该如何连接字符串?

这些例子之间有区别吗? 我应该在哪种情况下使用哪个? var str1 = “abc” + dynamicString + dynamicString2; var str2 = String.Format(“abc{0}{1}”, dynamicString, dynamicString2); var str3 = new StringBuilder(“abc”). Append(dynamicString). Append(dynamicString2). ToString(); var str4 = String.Concat(“abc”, dynamicString, dynamicString2); 有类似的问题: 字符串连接的差异只询问+运算符,并且在答案中甚至没有提到它被转换为String.Concat 什么是最好的字符串连接方法 ,它与我的问题没有真正关系,它要求最好的,而不是对串联字符串及其输出的可能方法的比较,正如这个问题所做的那样。 这个问题是询问每种情况会发生什么,这些例子的实际输出是什么? 他们有什么不同? 在哪种情况下我应该在哪里使用它们?