Kullanarak bir sınıf'türetilmiş bir tür statik ÜYE ler?
Bu ilginç bir uyarı ile karşılaştım 4.1, Resharper kullanarak: "türetilmiş bir tür) bir tür statik bir üye Erişim". İşte bu oluştuğu kod bir örnek:
class A {
public static void SomethingStatic() {
//[do that thing you do...]
}
}
class B : A {
}
class SampleUsage {
public static void Usage() {
B.SomethingStatic(); // <-- Resharper warning occurs here
}
}
Kimseye Bir statik üyelerinin kullanımında (varsa) B) ne olduğunu biliyor mu?
CEVAP
Bir yere olabilir yanıltıcı olduğunda statik bir fabrika yöntemi, örneğin WebRequest
sınıf bir fabrika yöntemi Create
izin verirsen bu tür kod yazılması erişim ile bir türetilmiş sınıf.
var request = (FtpWebRequest)HttpWebRequest.Create("ftp://ftp.example.com");
Burada request
tipi FtpWebRequest
ama kafa karıştırıcı çünkü göründüğü gibiydi oluşturulan bir HttpWebRequest
(kardeş sınıf) bile Create
yöntem aslında tanımlanan WebRequest
(temel sınıf). Aşağıdaki kodu anlamı aynıdır, ama daha net
var request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com");
Sonuçta büyük sorun türetilmiş bir tür üzerinden bir statik erişim yok, ama kod genellikle yapmayarak daha nettir.
Java iç sınıf ve statik iç içe sınıf...
Statik sınıf ve singleton deseni arası...
Python statik sınıf değişkenleri...
Neden Java statik olarak bir sınıf bil...
Sınıf adını al jQuery kullanarak...