Zastanawiam się, jak to możliwe, że imię pochodzące z C# 6 może uzyskać dostęp do właściwości niestatycznych, tak jakby było statyczne. Oto przykładJak działa nameof?
public class TestClass
{
public string Name { get; set; }
}
public class Test
{
public Test()
{
string name = nameof(TestClass.Name); // whats so speciall about nameof
//string name2 = TestClass.Name; this won't compile obviously,
}
}
Nie ma w tym nic specjalnego. Dzieje się to podczas kompilacji, a nie w czasie wykonywania. A kompilator nie ma problemu z przekształceniem elementu o nazwie Name w literał łańcuchowy "Name". Jedyne, co jest dziwne, to dlaczego do wersji dodano 6 wersji językowych :) –
Co masz na myśli "jak działa' nameof'? " Dlaczego _nie to by działało? Czy masz takie samo pytanie dla np. 'for',' switch', 'return', itp.? Jak _any_ z tych osób działa? Kompilator jest napisany, aby je zrozumieć i wygenerować poprawny skompilowany kod, gdy je zobaczy. Szukasz wyjaśnienia działania kompilatorów? Następnie "zbyt szeroki". Jeśli nie, to tak naprawdę nie rozumiem, o co pytasz. Wyjaśnij, co naprawdę cię zastanawia. –
możesz znaleźć swoją odpowiedź tutaj: http://stackoverflow.com/questions/31695900/what-is-- -funkcjonowanie-nazwa –