Je travaille avec un code qui a sept surcharges d'une fonction TraceWrite
:Résolution de surcharge et paramètres facultatifs en C# 4
void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, string Data = ""); void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, bool LogToFileOnly, string Data = ""); void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, string PieceID, string Data = ""); void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, LogWindowCommandENUM LogWindowCommand, string Data = ""); void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, bool UserMessage, int UserMessagePercent, string Data = ""); void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, string PieceID, LogWindowCommandENUM LogWindowCommand, string Data = ""); void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, LogWindowCommandENUM LogWindowCommand, bool UserMessage, int UserMessagePercent, string Data = "");
(. Tout public static, le bruit des espaces de noms élide ci-dessus et tout au long)
donc, avec ce fond:
1) par ailleurs, j'appelle TraceWrite
avec quatre arguments: string, LogLevelENUM, string, bool
, et je reçois les erreurs suivantes:
error CS1502: The best overloaded method match for 'TraceWrite(string, LogLevelENUM, string, string)' has some invalid arguments error CS1503: Argument '4': cannot convert from 'bool' to 'string'
Pourquoi cet appel ne résout-il pas la deuxième surcharge? (TraceWrite(string, LogLevelENUM, string, bool, string = "")
)
2) Si je devais appeler TraceWrite
avec string, LogLevelENUM, string, string
, quelle surcharge serait appelée? Le premier ou le troisième? Et pourquoi?
pour 1), je n'ai pas pu reproduire l'erreur que vous voyez. Il semble compiler bien pour moi quand je l'appelle avec ceci: TraceWriter.TraceWrite ("", LogLevelENUM.FakeLevel, "", false); –
OK, c'est * bizarre *. Mais ça arrive aussi pour moi. Quelques fois (string, LogLevelENUM, string, bool) compile, et d'autres fois ce n'est pas le cas. Je vais devoir regarder plus dur à cela. –