Ich habe diese Klassen:Rischer Parameter in C#
interface Info{}
class AInfo : Info { }
class BInfo : Info { }
class SendInfo {
static public f_WriteInfo(params Info[] _info) {
}
}
class Test {
static void Main() {
SendInfo.f_WriteInfo(
new[] {
new AInfo(){ ... },
new BInfo(){ ... },
});
// This will generate an error.
// There will be need casting between new and [] like new Info[]
}
}
Gibt es eine Möglichkeit, dies zu tun, ohne zu Gießen?
Like:
class SendInfo {
static public f_WriteInfo(params T _info) where T : Info {
Was ist falsch mit 'neuen Info []' nützlich sein wird? Es wirft nicht. Und technisch brauchen Sie kein Array, Sie können Kommata-getrennte Argumente angeben, wenn Sie 'params' verwenden:' WriteInfo (info1, info2); ' –
Nebenbei bemerkt bedeutet das Schlüsselwort' params', dass Sie nicht explizit angeben müssen Erstellen Sie ein Array beim Aufruf der Methode, können Sie einfach 'MyMethod (firstParam, secondParam, thirdParam);' –
das Problem ist, dass 'new []' als 'object []' interpretiert wird, in diesem Zusammenhang –