Implizite C#-Konvertierung von NullC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Implizite C#-Konvertierung von Null

Post by Anonymous »

Ich habe eine Struktur, die eine implizite Konvertierung von String oder StringBuilder zulässt.

Code: Select all

public ref struct StringParam
{
private string s;
private StringBuilder sb;
public static implicit operator StringParam(string s)
{
return new StringParam { s = s };
}
public static implicit operator StringParam(StringBuilder sb)
{
return new StringParam { sb = sb };
}
public override string ToString()
{
return s ?? sb?.ToString();
}
}
Gibt es eine Möglichkeit, die implizite Umwandlung von Null zu ermöglichen, ohne die Null zuerst explizit in einen String oder StringBuilder umzuwandeln?
Wenn ich versuche, Null zu übergeben, ohne sie in einen String umzuwandeln, erhalte ich die Fehlermeldung CS0037: Null kann nicht in „StringParam“ konvertiert werden, da es sich um einen nicht nullbaren Werttyp handelt. Wenn ich eine der impliziten Konvertierungen entferne, verschwindet dieser Fehler.
Ich habe das OverloadResolutionPriority-Attribut für die impliziten Operatoren ausprobiert, erhalte jedoch die Fehlermeldung CS9262: „OverloadResolutionPriorityAttribute“ kann für dieses Mitglied nicht verwendet werden.
Ich habe versucht, einen impliziten Operator StringParam(object o) zu erstellen, der Vorrang vor string und StringBuilder hat, aber ich erhalte die Fehlermeldung CS0553: Benutzerdefinierte Konvertierungen in oder von einem Basistyp sind nicht zulässig.
Ich habe versucht, „#nullable enable“ in die Klasse einzufügen, und habe nur eine der impliziten Konvertierungen nullbar gemacht, aber das hatte keine Auswirkung auf die Nullauflösung.
Ich weiß nicht, was ich sonst noch versuchen soll.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post