VB -> C#: Nullable comparisons in While conditions produce invalid C#
Les mainteneurs répondent en général sous 4 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 68/100
Piste de recherche
Start with the VB input and expected C# output in the issue, then trace how the converter handles While conditions and nullable comparisons. Add a regression test for the supplied case, including the parenthesized comparison variant. Done means the generated condition is a non-nullable bool and preserves VB's behavior when either value is Nothing.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
VB.Net input code
Imports System
Class TestClass
Sub TestMethod(startDate As Date?, endDate As Date?)
Dim currentDate = startDate
While currentDate <= endDate
currentDate = currentDate.Value.AddMinutes(1)
End While
End Sub
End Class
Erroneous output
The converted while condition evaluates to bool? rather than bool, producing:
CS0266: Cannot implicitly convert type 'bool?' to 'bool'.
An explicit conversion exists (are you missing a cast?)
Expected output
using System;
internal partial class TestClass
{
public void TestMethod(DateTime? startDate, DateTime? endDate)
{
var currentDate = startDate;
while (currentDate.HasValue && endDate.HasValue && currentDate.Value <= endDate.Value)
currentDate = currentDate.Value.AddMinutes(1d);
}
}
Details
- Product in use: VS extension, built locally from master.
- Version in use: 10.0.1, local development build.
- Did you see it working in a previous version, which? No.
- VB permits nullable comparisons in
Whileconditions. If the condition evaluates toNothing, the loop body is not executed. C# requires a non-nullableboolcondition. - The converter does not recognize
Whileas a context requiring a non-nullable Boolean result, so it preserves the comparison's nullable result instead of treatingNothingas false. - The issue also occurs when the comparison is enclosed in parentheses:
While (currentDate <= endDate).
- Langage dominant
- C#
- Étoiles
- 917
- Forks
- 243
- Merge moyen
- 4 j 42 min
- PR mergées (30 j)
- 11
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de icsharpcode/CodeConverter
-
VB -> C#
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
icsharpcode/CodeConverter#1301 ·
Les mainteneurs répondent en général sous 4 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
icsharpcode/CodeConverter#1271 · 1 commentaire ·
Les mainteneurs répondent en général sous 4 jours
-
VB -> C#: Generic extension method inference widens element types when using a base-type comparerOuverteVB -> C#
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
icsharpcode/CodeConverter#1302 · 1 réaction ·
Les mainteneurs répondent en général sous 4 jours
-
VB -> C#
Difficulté 3/5 1-2 jours Accessibilité débutants 62/100
icsharpcode/CodeConverter#1299 ·
Les mainteneurs répondent en général sous 4 jours
-
VB -> C#
Difficulté 3/5 1-2 jours Accessibilité débutants 62/100
icsharpcode/CodeConverter#1298 ·
Les mainteneurs répondent en général sous 4 jours
Toutes les issues de icsharpcode/CodeConverter
Issues similaires
-
needs attention untriaged
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet#3666 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
MicrosoftLearning/eShopOnWeb#466 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
stryker-mutator/stryker-net#3974 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
JiaFeiMiao-K-Cat/DiscImageStudio#171 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour