我写了一段优化的代码,其中包含null和 空字符串的特殊情况。我现在正在尝试为此代码编写单元测试。为了做到这一点,我需要两个不同对象的空(零长度)字符串对象。像这样:
string s1, s2;
Assert.IsTrue(s1.Length == 0 && s2.Length == 0);
Assert.IsTrue(!ReferenceEquals(s1, s2));
Run Code Online (Sandbox Code Playgroud)
事实证明,大多数 .NET Framework API 字符串都在检查空结果。string.Empty在所有这些情况下,他们都会回来。例如,"x".Remove(0, 1)返回string.Empty.
如何创建新的零长度字符串对象?
如何在Visual Studio 2017中处理未处理的异常后继续执行?
在2015版及更低版本中,通过单击Enable Editing"将调用堆栈展开到异常之前的点" 可以轻松完成.然后可以编辑执行点,变量和代码.
当库抛出异常时,此选项消失:
"".Substring(1);
Run Code Online (Sandbox Code Playgroud)
如果用户代码中发生异常,它仍然有效:
int x = 0;
Console.WriteLine(1 / x);
Run Code Online (Sandbox Code Playgroud)
注意可以拖动的黄色箭头.
我真的希望这个功能没有被删除,因为挽救一个崩溃的程序(这里,通过设置x = 1,例如,更改字符串常量或跳过有问题的行)是我做了很多事情.现在我在这种状态下完成了99%的多小时操作,我真的很想通过抑制一个不重要的错误来解救它.
这是.NET 4.6.1上的Visual Studio 2017 build 26228.
我只是想知道是否可以在便携式C或C++中使用内存映射文件.我想不是因为据我所知,没有标准能够识别内存映射文件的存在.
使用内存映射可以在两个地址处具有相同的字节.此外,我认为甚至不使用一块内存而不在那里构建一个对象(除了通过char*).因此,如果我们想将现有的映射文件视为应该是未定义行为的整数数组.
那么关于内存映射文件和标准的情况如何呢?
我正在帮助别人学习Java.我是高级C#开发人员.我一般都了解编程,但我不了解Java API.
Web上关于如何从控制台读取int的大多数建议都很复杂.它涉及BufferedReader等等InputStreamReader.这对于初学者来说是完全不可理解的.
我想为他提供一个static int readIntFromConsole()能够做到这一点的功能.这个功能的主体是什么?
这是场景:在我的WPF应用程序中,我希望始终保持循环运行以执行各种操作.我想到了这种模式:
void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
{
SomeProcessAsync(); //throw away task
}
async Task SomeProcessAsync()
{
while (true)
{
DoSomething();
await Task.Delay(1000);
}
}
Run Code Online (Sandbox Code Playgroud)
由于返回值未使用,该调用会触发警告.沉默警告的最简洁方法是什么?
#pragma warning disable 4014
AddItemsAsync(); //throw away task
#pragma warning restore 4014
Run Code Online (Sandbox Code Playgroud)
这有效,但看起来很讨厌!
顺便说一句,我也可以使用计时器,但我喜欢这个循环的简单性.
null条件运算符可用于跳过null目标上的方法调用.在这种情况下是否会评估方法参数?
例如:
myObject?.DoSomething(GetFromNetwork());
Run Code Online (Sandbox Code Playgroud)
什么GetFromNetwork时候myObject叫null?
我正在尝试将 C 库导入到 Visual Studio 项目中。该库附带以下文件:
msvcp140.dll
msvcp140_1.dll
msvcp140_2.dll
Run Code Online (Sandbox Code Playgroud)
我知道这些是 Microsoft C 运行时 DLL 文件。但我想更多地了解这些文件的用途。我想知道我需要什么二进制文件以及包括它们在内的后果。
msvcp140_1.dll和msvcp140_2.dll文件的目的是什么?
.NET函数string.Trim 修剪了一组相当广泛的空白字符.如何以最佳方式模拟这种确切的行为T-SQL?
LTRIM并且RTRIM只修剪空间角色,这是不够的.
使用SQL CLR这很容易,但这并不总是可行的,而且调用成本也很高.所以我想避免使用SQL CLR.
此外,标量UDF会强制执行串行计划,并且调用速度很慢.所以它可能不应该是标量UDF.
鉴于这些限制,最好的方法是什么?
未来访问者的注意事项:此问题基于错误的repro代码.该?.运营商确实短路.您现在可以关闭此浏览器选项卡.
网上有很多来源声称空条件运算符(?.)短路(例如http://www.informit.com/articles/article.aspx?p=2421572,搜索"电路").我无法发现任何这样的事情:
static void Main()
{
var c = new C();
Console.WriteLine(c?.Inner?.Inner); //does not rely on short circuiting, works
Console.WriteLine(c?.Inner.Inner); //throws NullReferenceException
}
class C
{
public C Inner;
}
Run Code Online (Sandbox Code Playgroud)
这里,第一行是因为第二行?..第二个?.看到null作为其第一个操作数,因此也返回null.这不是短路.
显然,即使触发了null情况,链的其余部分也会执行.链条没有中止.对我来说,短路意味着链条中止.MSDN声称是这种情况,但代码示例并未证明短路:
//The last example demonstrates that the null-condition operators are short-circuiting
int? count = customers?[0]?.Orders?.Count();
// null if customers, the first customer, or Orders is null
Run Code Online (Sandbox Code Playgroud)
在C#6开发周期中,这种行为是否曾经发生过变化?这可以解释网络上的不良消息来源.如果不存在,为什么会有这么多关于短路的讨论呢?我可能在这里误解了一些东西.