Wie kann dieser Code kompilieren? Der folgende Code im Operator int kann auf eine private Variable der Klasse MyValue zugreifen. Warum?Zugriff auf private Member eines Parameters innerhalb einer statischen Methode?
class Program
{
static void Main(string[] args)
{
Myvalue my = new Myvalue(100);
Console.WriteLine(my + 100);
Console.Read();
}
}
public class Myvalue
{
private int _myvalue;
public Myvalue(int value)
{
_myvalue = value;
}
public static implicit operator int(Myvalue v)
{
return v._myvalue;
}
}
Wenn die Klasse statisch gewesen wäre, hätte ich das verstanden. Aber da das Objekt an Parameter übergeben wird, warum benötigt es keinen Accessor? –
@Daok: Weil Ihre statische Methode ein Mitglied der Klasse ist. Wenn diese statische Methode irgendwo anders wäre, wäre das nicht erlaubt. –
Alles klar, danke für die Präzision. –