什么\t是在C#中生成字符串的最佳方法
我正在学习C#并尝试不同的方式来说同样的事情.
Tabs(uint t)是返回的功能string与t的量\t的
例如Tabs(3)返回"\t\t\t"
这三种实施方式中哪Tabs(uint numTabs)一种最好?
当然,这取决于"最佳"的含义.
LINQ版本只有两行,很不错.但重复和聚合的调用是否会不必要地耗费时间/资源?
该StringBuilder版本是很清楚的,但是是StringBuilder类莫名其妙慢?
该string版本是基本的,这意味着它很容易理解.
这根本不重要吗?它们都是平等的吗?
这些都是帮助我更好地了解C#的问题.
private string Tabs(uint numTabs)
{
IEnumerable<string> tabs = Enumerable.Repeat("\t", (int) numTabs);
return (numTabs > 0) ? tabs.Aggregate((sum, next) => sum + next) : "";
}
private string Tabs(uint numTabs)
{
StringBuilder sb = new StringBuilder();
for (uint i = 0; i < numTabs; i++)
sb.Append("\t");
return sb.ToString(); …Run Code Online (Sandbox Code Playgroud) 为什么有人会使用String.FormatC#和VB .NET而不是串联运算符(&在VB和+C#中)?
主要区别是什么?为什么每个人都如此感兴趣String.Format?我很好奇.
有没有办法获取List并将其转换为逗号分隔的字符串?
我知道我可以循环并构建它,但不知怎的,我认为你们中的一些人更酷的做法呢?
我真的想学习这些类型的"技巧",所以请解释或链接到您使用的方法的文档.
当我使用System.IO.File.WriteAllLines保存String []数组的内容时,在文件末尾总是留下一个空行.例如:
System.IO.File.WriteAllLines(Application.dataPath + "/test.txt",["a", "b", "c"]);
Run Code Online (Sandbox Code Playgroud)
生成文件(没有下划线):
a
b
c
_
Run Code Online (Sandbox Code Playgroud)
已经有这样一个主题:.Net File.WriteAllLines中的空行,是一个错误吗?但是,autor说"我认为我的数据存在问题,这是我的问题,但不是WritAllLines",它被关闭为"过于本地化"(?!?).
这是一个错误?我怎样才能轻松摆脱它(现在我只是在再次阅读文件时忽略它)?
从这里可以看出,其中一个String.Join重载与原始指针一起工作并使用一些叫做的东西UnSafeCharBuffer.为什么是这样?这是性能优化吗?
我写了一个循环来逐字显示每一行.问题是该列表包含更多45,000行,并且需要花费大量时间来创建用于显示的页面.
有人可以帮助优化代码!
List<string> OverrrideLog = lc.getOverrideLog();
List<string> AccessLog = lc.getAccessLog();
foreach (string s in OverrrideLog)
lblOverrideLog.Text += s + "<br/>";
foreach (string s in AccessLog)
lblAccessLog.Text += s + "<br/>";
Run Code Online (Sandbox Code Playgroud)
这里lblOverrideLog和lblAccessLog是文字,每个列表有超过22,000行.
我只做了C++和一些C#,我是MySQL新手,我不明白字符串构建器的用途.
此代码是程序的一部分,该程序用于从网页中提取数据并使用书签将其插入到现有的Word文件中.
我的代码
using System.Collections.Generic;
using System.Configuration;
using System.Text;
using MySql.Data.MySqlClient;
namespace ARExtractionLibrary
{
public class DataExtractor
{
#region Attributes
private string _databaseConfig = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
private const int AR_TRACKER_ID = 10;
private const int AR_NUMBER_ID = 3;
#endregion
#region Methods
public Dictionary<string, Field> GetFieldData(int TicketID)
{
MySqlConnection sqlConnection = new MySqlConnection(_databaseConfig);
Dictionary<string, Field> fieldsDictionary = new Dictionary<string, Field>();
StringBuilder queryDefaultFields = new StringBuilder();
queryDefaultFields.Append("SELECT issues.id AS TicketID, issues.subject, issues.description, ");
queryDefaultFields.Append(" CONCAT(users.firstname,' ', users.lastname) as Author");
queryDefaultFields.Append(" FROM issues LEFT …Run Code Online (Sandbox Code Playgroud) 我有一个double[][]我想要转换为CSV字符串格式(即一行中的每一行,以逗号分隔的行元素).我这样写的:
public static string ToCSV(double[][] array)
{
return String.Join(Environment.NewLine,
Array.ConvertAll(array,
row => String.Join(",",
Array.ConvertAll(row, x => x.ToString())));
}
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式来使用LINQ编写这个?
(我知道,可以使用临时变量来使这看起来更好,但这种代码格式更好地传达了我正在寻找的东西.)
我理解这StringBuilder是在循环中连接字符串的选择,如下所示:
List<string> myListOfString = GetStringsFromDatabase();
var theStringBuilder = new StringBuilder();
foreach(string myString in myListOfString)
{
theStringBuilder.Append(myString);
}
var result = theStringBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)
但是哪些场景StringBuilder表现优异String.Join(),反之亦然?
var theStringBuilder = new StringBuilder();
theStringBuilder.Append("Is this ");
theStringBuilder.Append("ever a good ");
theStringBuilder.Append("idea?");
var result = theStringBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)
要么
string result = String.Join(" ", new String[]
{
"Or", "is", "this", "a", "better", "solution", "?"
});
Run Code Online (Sandbox Code Playgroud)
任何指导将不胜感激.
编辑:是否有一个阈值,其中的创建开销StringBuilder是不值得的?