Sagen wir, ich habe einige Struktur und eine Schnittstelle, die unter anderem aussetzt, dass struct als Eigenschaft:Führen Interfaces mit Struktureigenschaften zum Boxen?
public struct MyStruct{
public readonly string Hello;
public MyStruct(string world){
Hello = world;
}
}
public interface IMyInterface{
MyStruct myStruct{ get; set; }
}
Und in meiner Anwendung, ein Objekt, das die Schnittstelle implementiert, erstellt und in eine Methode übergeben:
public void MyMethod(IMyInterface interface){
var structContents = interface.myStruct;
Console.WriteLine(structContents.Hello);
}
Meine Frage ist: wenn ich diese Struktur Wert in die Schnittstelle Verpackung und es um meine Anwendung vorbei, wird diese Struktur verpackt werden und dann später unboxed wird, wenn ich es in MyMethod zugreifen? Oder gibt es ein anderes Boxing/Unboxing oder anderes Problem, das hinter den Kulissen mit solch einem Design auftaucht?
Nein, Strukturen als Mitglieder von Schnittstellen sind nicht eingerahmt. Strukturen, die einer Variablen eines Schnittstellentyps zugewiesen sind, die sie implementieren, sind eingerahmt. – Lee