Tag: string interpolation

插值字符串中的C#引号意外字符\ 0022

我已经读过你可以在插值字符串中使用表达式,但是转义引号不起作用。 private string sth = $”{String.Join(\”\”, Node.stringToType.Keys)}”; Error CS1056: Unexpected character `\0022′ (CS1056) Error CS1525: Unexpected symbol `)’, expecting `${‘, `:’, or `}’ (CS1525) 更新: 上面的内在表达相当于 String.Join(“”, Node.stringToType.Keys) (两个反斜杠用于转义两个双引号),就像你可以插入任何分隔符一样。

新的C#6.0字符串插值语句不编译

我试图实现这个video中的一些function,但我没有太多运气新的字符串插值语法(我还有其他一切工作,至少在这段代码中)。 我使用的是Visual Studio 2015 CTP6,我已将其配置为使用.NET 4.6并已进入Build选项以确保我指定C#6.0。 我也按照这里的说明进行操作 。 这是我的代码: using System; using static System.Math; namespace NewCsharp6Features { public class C6Point { public int X { get; } public int Y { get; } public double Distance => Sqrt(X * X + Y * Y); public C6Point(int x, int y) { X = x; Y = […]

C#6.0的字符串插值是否依赖于Reflection?

简短而简单。 C#6.0中的新字符串插值是否依赖于reflection? 即 string myStr = $”Hi {name}, how are you?”; 在运行时使用reflection来查找变量“name”及其值?

动态字符串插值

谁能帮我这个? 必需输出:“ Todo job for admin ” class Program { static void Main(string[] args) { Console.WriteLine(ReplaceMacro(“{job.Name} job for admin”, new Job { Id = 1, Name = “Todo”, Description=”Nothing” })); Console.ReadLine(); } static string ReplaceMacro(string value, Job job) { return value; //Output should be “Todo job for admin” } } class Job { public int […]

是否可以将插值字符串作为参数传递给方法?

我已经开始使用Interpolated Strings (C#6的新function),它非常有用且优雅。 但根据我的需要,我必须将字符串格式作为参数传递给方法。 像下一个: MyMethod(string format) 在过去,我在下一个方面使用它: MyMethod(“AAA{0:00}”) 现在我尝试了这段代码: MyMethod($”AAA{i:00}”) 但这不起作用,因为i是在方法内部创建的,并且在此上下文中超出了范围。 是否可以使用任何技巧将插值字符串作为参数传递给方法?

使用字符串插值重载的字符串方法

为什么字符串插值更喜欢使用string而不是IFormattable来重载方法? 想象一下: static class Log { static void Debug(string message); static void Debug(IFormattable message); static bool IsDebugEnabled { get; } } 我有非常昂贵的ToString()对象。 以前,我做过以下事情: if (Log.IsDebugEnabled) Log.Debug(string.Format(“Message {0}”, expensiveObject)); 现在,我希望在Debug(IFormattable)有IsDebugEnabled逻辑,并且只在必要时才在消息中的对象上调用ToString()。 Log.Debug($”Message {expensiveObject}”); 但是,这会调用Debug(string)重载。

是否可以在不使用连接符的情况下在字符串变量中包含C#变量?

.NET 3.5 C#允许我们在字符串变量中包含变量而不必使用+ concatenator(或string.Format())。 例如(在伪,我使用$符号来指定变量): DateTime d = DateTime.Now; string s = “The date is $d”; Console.WriteLine(s); 输出: 日期是4/12/2011 11:56:39 AM 编辑 由于提示string.Format()的一些响应,我只能假设当我提到“ …(或string.Format(),就此而言)时,我的原始post不清楚”。 要清楚,我很清楚string.Format()方法。 但是,在我正在处理的特定项目中,string.Format()对我没有帮助(它实际上比+连接器更糟)。 另外,我推断大多数/你们都想知道我的问题背后的动机是什么(我想如果我按原样阅读我的问题,我会有同样的感受)。 如果你是一个好奇的人,这就是它的缺点: 我正在创建一个在Windows CE设备上运行的Web应用程序。 由于Web服务器的工作原理,我在字符串变量中创建了整个网页内容(css,js,html等)。 例如,我的.cs托管代码可能有这样的东西: string GetPageData() { string title = “Hello”; DateTime date = DateTime.Now; string html = @” $title Hello StackO The date is $date “; […]

为什么我不能在没有括号的插值字符串中使用条件运算符?

为什么我不能在ac#-6字符串插值中使用内联条件运算符,而不在括号内包含它? 和错误: 如您所见,解析器似乎很难。 这是一个错误,还是字符串插值机制的一个特性?

C#插值字符串中的可选参数是什么?

插值字符串是C#6.0的新function之一。 根据MSDN,嵌入式C#表达式的语法可以包含一个可选的逗号分隔值,在文档中视为 。 不幸的是,我没有找到这个领域的用途。 从它的名称可以认为这个值设置了“插值”字段的最大大小,但是当我尝试以下表达式时: var p = Process.GetCurrentProcess(); Console.WriteLine($”Process name is {p.ProcessName, 5}”); 我得到以下输出: Process name is LINQPad.UserQuery

插值存储在数据库中的字符串

我们希望维护从ASP.NET Web应用程序发送到数据库中的电子邮件。 想法是电子邮件的格式存储在数据库中。 问题是电子邮件应包含订单特定信息,例如: 感谢您的订单John Smith, 您的订单已收到1234 我想要实现的是我在数据库列值中使用了字符串verbatims,它将被存储在这里: 感谢您的订单{o.customer}, 您的订单已收到{o.id} 我很好奇是否可以进行字符串插值,其值已经在格式化的字符串中。 如果我尝试使用String.Format(dbEmailString)它会抛出exception: mscorlib.dll中出现“System.FormatException”类型的exception,但未在用户代码中处理 附加信息:输入字符串格式不正确。