var dateReference = new DateTime(2018, 7, 29);
for (var h = 0; h < 24; h++) {
for (var m = 0; m < 60; m++) {
var myDateTime = dateReference.AddHours(h).AddMinutes(m);
Console.WriteLine("Now at " + myDateTime.ToShortDateString() + " " + myDateTime.ToShortTimeString());
}
}
Perhatikan bagaimana contoh terakhir myDateTimedideklarasikan lagi di setiap siklus; jika dateReferencetelah terpengaruh oleh AddHours()atau AddMinutes(), myDateTimeakan mengembara dengan sangat cepat - tetapi tidak, karena dateReferencetetap diam:
Now at 2018-07-290:00
Now at 2018-07-290:01
Now at 2018-07-290:02
Now at 2018-07-290:03
Now at 2018-07-290:04
Now at 2018-07-290:05
Now at 2018-07-290:06
Now at 2018-07-290:07
Now at 2018-07-290:08
Now at 2018-07-290:09
...
Now at 2018-07-2923:55
Now at 2018-07-2923:56
Now at 2018-07-2923:57
Now at 2018-07-2923:58
Now at 2018-07-2923:59
var original = new DateTime(2010, 11, 24);
var clone = original;
DateTimeadalah tipe nilai, jadi saat Anda menetapkannya, Anda juga akan mengkloningnya. Meskipun demikian, tidak ada gunanya mengkloningnya karena tidak dapat diubah; biasanya Anda hanya akan mengkloning sesuatu jika Anda berniat mengubah salah satu salinannya.
+1 Setuju. Cara saya mengatasi masalah ini adalah dengan membuat objek DateTime baru dan hanya menyalin bagian yang diperlukan yang ingin saya klon seperti (hari, bulan, tahun) dari objek datetime asli dan kemudian mengatur waktu secara manual untuk objek baru .. .. sebagai contoh.
Dal
12
DateTime adalah tipe nilai jadi setiap kali Anda menetapkannya ke variabel baru, Anda kloning.
DateTime
, itu tidak bisa diubah.Jawaban:
DateTime adalah tipe nilai (
struct
)Ini berarti bahwa berikut ini membuat salinan:
Anda juga dapat melakukan hal-hal seperti:
var dateReference = new DateTime(2018, 7, 29); for (var h = 0; h < 24; h++) { for (var m = 0; m < 60; m++) { var myDateTime = dateReference.AddHours(h).AddMinutes(m); Console.WriteLine("Now at " + myDateTime.ToShortDateString() + " " + myDateTime.ToShortTimeString()); } }
Perhatikan bagaimana contoh terakhir
myDateTime
dideklarasikan lagi di setiap siklus; jikadateReference
telah terpengaruh olehAddHours()
atauAddMinutes()
,myDateTime
akan mengembara dengan sangat cepat - tetapi tidak, karenadateReference
tetap diam:Now at 2018-07-29 0:00 Now at 2018-07-29 0:01 Now at 2018-07-29 0:02 Now at 2018-07-29 0:03 Now at 2018-07-29 0:04 Now at 2018-07-29 0:05 Now at 2018-07-29 0:06 Now at 2018-07-29 0:07 Now at 2018-07-29 0:08 Now at 2018-07-29 0:09 ... Now at 2018-07-29 23:55 Now at 2018-07-29 23:56 Now at 2018-07-29 23:57 Now at 2018-07-29 23:58 Now at 2018-07-29 23:59
sumber
var original = new DateTime(2010, 11, 24); var clone = original;
DateTime
adalah tipe nilai, jadi saat Anda menetapkannya, Anda juga akan mengkloningnya. Meskipun demikian, tidak ada gunanya mengkloningnya karena tidak dapat diubah; biasanya Anda hanya akan mengkloning sesuatu jika Anda berniat mengubah salah satu salinannya.sumber
DateTime adalah tipe nilai jadi setiap kali Anda menetapkannya ke variabel baru, Anda kloning.
sumber