相关疑难解决方法(0)

InvariantCulture和Ordinal字符串比较之间的区别

比较c#中的两个字符串是否相等,InvariantCulture和Ordinal比较之间有什么区别?

.net c# string-comparison ordinal

518
推荐指数
7
解决办法
13万
查看次数

.NET Core 3.1 与 .NET 6.0

我对 Visual Studio 2022、C# 10 和 .NET 6.0 的发布感到非常兴奋,下载并安装了社区版本并测试了我正在开发的项目。我将目标框架更改为 6.0 并执行了干净的构建。太好了,一切都按预期构建。

因此,继续向上运行该项目。第一次测试失败了。我必须说我很惊讶。我开始深入研究,并非常惊讶地发现 .NET Core 3.1 和 .NET 6.0 之间的差异。

这是一个示例程序:

public class Program
{
    public static readonly string CTCPDelimiterString = "\x0001";
    public static readonly char CTCPDelimiterChar = '\x0001';

    public static void Main(string[] args)
    {
        string text = "!sampletext";

        Console.Write("  Using a char: ");
        if (text.StartsWith(CTCPDelimiterChar) && text.EndsWith(CTCPDelimiterChar))
        {
            Console.WriteLine("got CTCP delimiters");
        }
        else
        {
            Console.WriteLine("did not get CTCP delimiters");
        }

        Console.Write("Using a string: ");
        if (text.StartsWith(CTCPDelimiterString) && text.EndsWith(CTCPDelimiterString))
        {
            Console.WriteLine("got …
Run Code Online (Sandbox Code Playgroud)

c# netcoreapp3.1 .net-6.0 visual-studio-2022

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

string.IndexOf 在 .NET 5.0 中返回不同的值

当我在 .NET Core 3.1 中运行以下代码时,我得到6了返回值。

// .NET Core 3.1
string s = "Hello\r\nworld!";
int idx = s.IndexOf("\n");
Console.WriteLine(idx);
Run Code Online (Sandbox Code Playgroud)

结果:

6
Run Code Online (Sandbox Code Playgroud)

但是当我在 .NET 5.0 中运行这段代码时,我得到了不同的结果。为什么会发生这种情况?

6
Run Code Online (Sandbox Code Playgroud)

结果:

-1
Run Code Online (Sandbox Code Playgroud)

c# .net-core .net-5

12
推荐指数
2
解决办法
832
查看次数