VB -> C#: Switch on Object type results in behaviour change when cases are a different type
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Reproduza o exemplo de VB.NET por meio do conversor e inspecione o ponto de entrada da conversão de Select Case-to-switch. Compare o comportamento quando o seletor é Object e os valores de case têm outro tipo, depois adicione cobertura para a entrada mostrada e o comportamento esperado de C#. Está concluído quando o código convertido preserva o resultado da correspondência do VB.NET e os testes de conversão existentes continuam passando.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
VB.Net input code
Public Class VisualBasicClass
Sub Main()
Dim StrObject As Object = "10"
Select Case StrObject
Case 10
Console.WriteLine("Ten")
Case 20
Console.WriteLine("Twenty")
Case Else
Console.WriteLine("Else")
End Select
Console.ReadLine()
End Sub
End Class
Output: Ten
Erroneous output
public partial class VisualBasicClass
{
public void Main()
{
object StrObject = "10";
switch (StrObject)
{
case 10:
{
Console.WriteLine("Ten");
break;
}
case 20:
{
Console.WriteLine("Twenty");
break;
}
default:
{
Console.WriteLine("Else");
break;
}
}
Console.ReadLine();
}
}
Output: Else
Expected output
Looks pretty gross, but maybe something like this:
public partial class VisualBasicClass
{
public void Main()
{
object StrObject = "10";
switch (StrObject)
{
case var @case when Operators.ConditionalCompareObjectEqual(StrObject, 10, false):
{
Console.WriteLine("Ten");
break;
}
case var @case when Operators.ConditionalCompareObjectEqual(StrObject, 20, false):
{
Console.WriteLine("Twenty");
break;
}
default:
{
Console.WriteLine("Else");
break;
}
}
Console.ReadLine();
}
}
Output: Ten
Details
- Product in use: both
- Version in use: VS Extension Version 9.0.4.0 / Website latest
- Did you see it working in a previous version, which? No
- Any other relevant information to the issue, or your interest in contributing a fix.
- Linguagem predominante
- C#
- Estrelas
- 913
- Forks
- 244
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de icsharpcode/CodeConverter
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
icsharpcode/CodeConverter#1271 · 1 comentário ·
-
C# -> VB
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
icsharpcode/CodeConverter#1281 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
icsharpcode/CodeConverter#1275 ·
-
VB -> C#
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 62/100
icsharpcode/CodeConverter#1273 ·
-
VB -> C#: "Group By Into" Linq queries supressing aggregations ("Into" part) in the converted codeAbertaDifficult area VB -> C#
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 74/100
icsharpcode/CodeConverter#1272 ·
Todas as issues de icsharpcode/CodeConverter
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
microsoft/fluentui-blazor#5364 ·
Mantenedores costumam responder em até 1 dia
-
.NET triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
microsoft/agent-framework#8811 ·
Mantenedores costumam responder em até 1 dia
-
.NET Docs
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
getsentry/sentry-dotnet#5637 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
QuantConnect/Lean#9842 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
NethermindEth/nethermind#14012 ·
Mantenedores costumam responder em até 1 dia