forked from rstropek/Samples
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
42 lines (37 loc) · 1.07 KB
/
Copy pathProgram.cs
File metadata and controls
42 lines (37 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
var calculatedDeliveryDate = new DateTime(2022, 5, 10);
var desiredDeliveryDate = new DateTime(2012, 5, 20);
// This is "old-style". Passing DateTime values around means copying memory.
DateTime GetDeliveryDateByValue(DateTime calc, DateTime desired)
{
if (calc < desired)
{
return desired;
}
else
{
return calc;
}
}
Console.WriteLine(GetDeliveryDateByValue(
calculatedDeliveryDate,
desiredDeliveryDate));
// This is "new-style". Passing and returning DateTime values by reference does not need to copy memory.
ref DateTime GetDeliveryDateByRef(ref DateTime calc, ref DateTime desired)
{
if (calc < desired)
{
return ref desired;
}
else
{
return ref calc;
}
}
Console.WriteLine(GetDeliveryDateByRef(
ref calculatedDeliveryDate,
ref desiredDeliveryDate));
// Example for writing to the returned reference
var tictactoeBoard = string.Empty.PadLeft(9, '_').ToCharArray();
ref char GetElement(int x, int y) => ref tictactoeBoard[y * 3 + x];
GetElement(1, 1) = 'X';
Console.WriteLine(tictactoeBoard);