小编Mer*_*rad的帖子

如何编译C#字符串插值?

我知道插值是语法糖string.Format(),但它是否有任何特殊的行为/识别何时与字符串格式化方法一起使用?

如果我有一个方法:

void Print(string format, params object[] parameters)
Run Code Online (Sandbox Code Playgroud)

以下使用插值调用它:

Print($"{foo} {bar}");
Run Code Online (Sandbox Code Playgroud)

以下哪个调用行最相当于字符串插值的编译结果?

Print(string.Format("{0} {1}", new[] { foo, bar }));
Print("{0} {1}", new[] { foo, bar });
Run Code Online (Sandbox Code Playgroud)

问题背后的推理:诸如NLog之类的记录框架通常会推迟字符串格式化,直到确定将实际写入日志消息为止.一般来说,我更喜欢字符串插值语法,但我需要知道它是否会产生额外的性能损失.

c# string-formatting roslyn c#-6.0

21
推荐指数
1
解决办法
1821
查看次数

当我添加新行时,如何将RichTextBox滚动到末尾?

我有几个只读的RichTextBox用于记录输出.因为它们是只读的,所以当文本更新时它们似乎不会自动滚动.我可以使用TextChanged事件来强制滚动结束,但是不是简单地在XAML中设置属性或其他东西的方法,以便滚动像正常一样发生吗?

c# wpf xaml richtextbox

15
推荐指数
2
解决办法
2万
查看次数

不使用 IEEE754 浮点的 C++ 编译器/平台

我正在努力更新序列化库,以添加对以可移植方式序列化浮点的支持。理想情况下,我希望能够在不支持 IEEE754 的环境中测试代码。使用软浮动库进行测试是否足够?或者关于如何正确测试代码的任何其他建议?

c++ floating-point ieee-754

5
推荐指数
1
解决办法
678
查看次数

抛出catch块(C++)是否有效?

我有一段时间没有做过C++而且我的记忆很模糊,到目前为止我找不到确定的答案.我不是在讨论重新抛出捕获的异常,而是捕获一个异常并抛出不同的类型,例如:

std::unordered_map<int, int> foo;
...
int getFoo(int id)
{
  try {
    return foo.at(id);
  }
  catch (std::out_of_range& e)
  {
    throw MyMoreDescriptiveExceptionType();
  }
}
Run Code Online (Sandbox Code Playgroud)

c++ exception-handling exception

1
推荐指数
1
解决办法
282
查看次数