dotnet/roslyn

Clarify diagnostic when constant pattern has non-constant conversion to input type

已关闭

#63,476 创建于 2022年8月18日

 (1 条评论) (0 个反应) (0 位负责人)C# (4,257 个派生)batch import
Area-CompilersBugConcept-Diagnostic Clarityhelp wanted

仓库指标

星标
 (20,414 个星标)
PR 合并指标
 (平均合并 6天 17小时) (30 天内合并 256 个 PR)

描述

The error given for the below scenario could be made more clear: it is not the string literal itself which is the problem, it is the conversion to the switch input type which makes it a problem. SharpLab.

Discussed in https://github.com/dotnet/roslyn/discussions/63400

Originally posted by zms9110750 August 15, 2022

foreach (var ele in XElement.Load("D:\\temp.xml").Nodes())
{
	switch (ele)
	{
		case XElement xel:
			const string br = "br";
			Console.WriteLine(xel.Name switch
			{
				"br" => "\n", //CS0150
				br => "\n",	  //CS0150
				S.br => "\n", //CS0150
			});
			break;

		case XText txt:
			Console.WriteLine(txt);
			break;
	}
}
static class S
{
	public const string br = "br";
}

Why does pattern matching not treat strings as constants

贡献者指南