Ik heb wat problemen met het by value/reference principe in C#. Ik heb meer een c++ achtergrond waardoor ik nu in c# wat dingen door elkaar haal.
Ik heb verstaan dat alle objecten in c# bij reference worden doorgegeven.
Nu heb ik een functie die een object returnt, aangezien het over een object gaat wordt er dus een referentie teruggeven. En hier zit juist het probleem aangezien ik geen referentie terug wil van het object maar een kopie van dit object.
Is er een omweg om dit voor elkaar te krijgen?
Ik heb verstaan dat alle objecten in c# bij reference worden doorgegeven.
Nu heb ik een functie die een object returnt, aangezien het over een object gaat wordt er dus een referentie teruggeven. En hier zit juist het probleem aangezien ik geen referentie terug wil van het object maar een kopie van dit object.
Is er een omweg om dit voor elkaar te krijgen?
C#:
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
43
44
45
46
| class Foo { RicherTextBox m_richTxtBox_main; CHtmlTag htmlTag; public Foo() { htmlTag = new CHtmlTag(); } public void format_html() { htmlTag.doe(); /* Hier zit het probleem m_richTxtBox_main verwijst nu naar m_richTxtBox_sub. De bedoeling is dat alleen de waarde van m_richTxtBox_sub in m_richTxtBox_main wordt gekopieerd. */ m_richTxtBox_main = htmlTag.GetRichTxtBox(); } } class CHtmlTag { RicherTextBox m_richTxtBox_sub; public CHtmlTag() { m_richTxtBox_sub = new RicherTextBox(); } public doe() { m_richTxtBox_sub.Text = "Waarde 1"; } public RicherTextBox GetRichTxtBox() { return m_richTxtBox_sub; } } |