programlamada yeniyim. bir uygulama örneğinde kullanılan datetime yapısı hakkında kafama takılan bazı sorular oldu.

int hour = Datetime.Now.Hour;

şimdi burada Datetime yapısının tanımlandığı yere gidince şöyle bir şey gördüm.

public static DateTime Now { get; }
public int Hour { get; }

bu kısımda biz bir static üye yardımıyla bir propertye ulaşabiliyoruz. bu kısmı anlamadım. normalde static olmayan bir sınıf üyesine o sınıftan bir nesne oluşturmadan ulaşamıyorduk ama böyle kullanabiliyoruz. bu kısım kafama takılıyor. bilmediğim ne var burada merak ediyorum.

bir de bu datetime yapısı nasıl çalışıyor? tanımlamalara baktım sadece metot imzaları ve propertyler tanımlanmış. herhangi bir işlem yok. bu yapı nasıl çalışıyor?

 

emin olmamakla beraber temel veriler zaten hali hazırda .net içerisinde gömülü geliyordur.

rhan

Static keywordunu aciklayayim:
Object oriented dillerde (C#, Java vs.) bir nesnenin propertisine erismek icin "new" keywordu ile yaratmak gerekir. Ornegin Araba diye bir nesne dusun. Aslinda Araba bir genel isimdir, nesne olamaz cunku dunyada milyonlarca araba var ve her biri birbirinden farkli. Yani tekil degildir. Araba kelimesi de bir arabayi degil genel olarak bir kavrami ifade eder. O nedenle "motorGucu" diye bir property almak istersek o nesneyi yaratmadan alamayiz. Cunku her arabanin motor gucu farklidir, araba diye tekil bir nesne yoktur, araba genel bir isimdir ve bu genel kavramdan bir somut nesne yaratmadan motor gucunu alamayiz. Peki bu static nedir? static tekillik iceren nesnelere veririz. Yani ondan sadece 1 tane vardir, baska da yoktur. Ornegin pi sayisi tektir, degismez. O nedenle static pi sayisindan bir nesne yaratmamiz gekemez, o zaten kendisi bir nesnedir. Ornegin "dunya" bir tane vardir, baska gezegenler olsa da 1 dunya var o nedenle dunya static nesnesinin tum ozellikleri sabit yani static dir. SEnin bu orneginde ise "now" static tanimlanmistir. Cunku "now" yani universal olarak su anin zamani sadece 1 tanedir. dunyanin neresine gidersen git, universal zaman 1 tanedir ve "now" dedigin anda hangi "context" de olursan ol tek bir sey alirsin. o nedenle bir obje yaratmaya gerek yok (eger paralel evrenler ve zamanlar soz konusu degilse).

Eger bir methodun icerigini goremiyorsan ve o method calisiyor ise o icerik native kod olarak calisiyordur. Yani o kod C# dili ile yazilmamistir, O methodun icerigi dolu ama baska dilde olan o icerik goruntulenmedigi ici bostur. Buyuk ihtimalle o icerik C dili ile yazilmistir.

emrahday

o sınıfa daha ayrıntılı bakmak lazım. bu iki satırdan anlayamayız.

pgup
1

mobil görünümden çık