小编dB.*_*yee的帖子

C#string.Substring()或string.Remove()

我想知道是否使用更好的做法:

var a = b.Substring(6);  
Run Code Online (Sandbox Code Playgroud)

要么

var a = b.Remove(0,6);  
Run Code Online (Sandbox Code Playgroud)

哪一个效率更高/更快?显然,子字符串有更多选项可供您选择,但Remove()无法做到。.很抱歉,如果这是新手问题,我对C#还是陌生的

c# string substring

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

这里有取消令牌的用途

我有以下代码:

using (var cancelSource = new CancellationTokenSource()) 
{
    Task[] tasks = null;

    var cancelToken = cancelSource.Token;
    tasks = new[]
    {
        Task.Run(async () => await ThrowAfterAsync("C", cancelToken, 1000)) //<---
    };
    await Task.Delay(howLongSecs * 1000); // <---
    cancelSource.Cancel();
    await Task.WhenAll(tasks);
}
Run Code Online (Sandbox Code Playgroud)

哪里ThrowAfterAsync有这样的:

private async Task ThrowAfterAsync(string taskId, CancellationToken cancelToken, int afterMs)
{
    await Task.Delay(afterMs, cancelToken);
    var msg = $"{taskId} throwing after {afterMs}ms";
    Console.WriteLine(msg);
    throw new ApplicationException(msg);
}
Run Code Online (Sandbox Code Playgroud)

Resharper建议我可以使用Task.Run()带有取消令牌的重载,如下所示:

Task.Run(async () => await ThrowAfterAsync("C", cancelToken, 1000), cancelToken)
Run Code Online (Sandbox Code Playgroud)

但为什么 ?在没有取消令牌作为参数的情况下,在第一个版本上执行此操作有什么好处?

.net c# resharper task task-parallel-library

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

标签 统计

c# ×2

.net ×1

resharper ×1

string ×1

substring ×1

task ×1

task-parallel-library ×1