回答編集履歴
7
間違いを修正
answer
CHANGED
@@ -20,6 +20,6 @@
|
|
20
20
|
```C#
|
21
21
|
public void deepcopy(HogeClass mc) {
|
22
22
|
this.mycl = new List<MyClass>();
|
23
|
-
this.mycl.AddRange(mc.mycl.Select(i => new MyClass() { val = i.val, text =
|
23
|
+
this.mycl.AddRange(mc.mycl.Select(i => new MyClass() { val = i.val, text = i.text }));
|
24
24
|
}
|
25
25
|
```
|
6
追記
answer
CHANGED
@@ -12,7 +12,14 @@
|
|
12
12
|
{
|
13
13
|
public object Clone()
|
14
14
|
{
|
15
|
-
return new MyClass() { val = this.val
|
15
|
+
return new MyClass() { val = this.val, text = this.text }
|
16
16
|
}
|
17
17
|
}
|
18
|
-
```
|
18
|
+
```
|
19
|
+
今回のように簡単なクラスなら Clone() を使わなくてもいいかもしれませんが、メンテナンスを考えると、最初期から Clone() を実装するのがいいと思います。
|
20
|
+
```C#
|
21
|
+
public void deepcopy(HogeClass mc) {
|
22
|
+
this.mycl = new List<MyClass>();
|
23
|
+
this.mycl.AddRange(mc.mycl.Select(i => new MyClass() { val = i.val, text = this.text }));
|
24
|
+
}
|
25
|
+
```
|
5
public 追加
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
```C#
|
11
11
|
class MyClass: ICloneable
|
12
12
|
{
|
13
|
-
object Clone()
|
13
|
+
public object Clone()
|
14
14
|
{
|
15
15
|
return new MyClass() { val = this.val; text = this.text }
|
16
16
|
}
|
4
Clone追記
answer
CHANGED
@@ -5,3 +5,14 @@
|
|
5
5
|
this.mycl.AddRange(mc.mycl.Select(i => (MyClass)i.Clone()));
|
6
6
|
}
|
7
7
|
```
|
8
|
+
ただし、MyClass に Clone() メソッドが実装されていないので、このままではコンパイルエラーになります。
|
9
|
+
Clone() メソッドを追加してください。
|
10
|
+
```C#
|
11
|
+
class MyClass: ICloneable
|
12
|
+
{
|
13
|
+
object Clone()
|
14
|
+
{
|
15
|
+
return new MyClass() { val = this.val; text = this.text }
|
16
|
+
}
|
17
|
+
}
|
18
|
+
```
|
3
削除
answer
CHANGED
@@ -5,10 +5,3 @@
|
|
5
5
|
this.mycl.AddRange(mc.mycl.Select(i => (MyClass)i.Clone()));
|
6
6
|
}
|
7
7
|
```
|
8
|
-
ただし、MyClass に Clone() メソッドが実装されていないので、これだとコンパイルエラーになると思います。中の要素も複製したいのであれば、Clone() を実装してください。
|
9
|
-
中の要素の複製は必要なく、同じ要素が追加されたリストのみ複製すれば良いのであれば、次のようになります。
|
10
|
-
```C#
|
11
|
-
public void deepcopy(HogeClass mc) {
|
12
|
-
this.mycl = new List<MyClass>(mc.mycl);
|
13
|
-
}
|
14
|
-
```
|
2
更新
answer
CHANGED
@@ -2,14 +2,13 @@
|
|
2
2
|
```C#
|
3
3
|
public void deepcopy(HogeClass mc) {
|
4
4
|
this.mycl = new List<MyClass>();
|
5
|
-
mycl.AddRange(mc.mycl.Select(i => (MyClass)i.Clone()));
|
5
|
+
this.mycl.AddRange(mc.mycl.Select(i => (MyClass)i.Clone()));
|
6
6
|
}
|
7
7
|
```
|
8
8
|
ただし、MyClass に Clone() メソッドが実装されていないので、これだとコンパイルエラーになると思います。中の要素も複製したいのであれば、Clone() を実装してください。
|
9
9
|
中の要素の複製は必要なく、同じ要素が追加されたリストのみ複製すれば良いのであれば、次のようになります。
|
10
10
|
```C#
|
11
11
|
public void deepcopy(HogeClass mc) {
|
12
|
-
this.mycl = new List<MyClass>();
|
12
|
+
this.mycl = new List<MyClass>(mc.mycl);
|
13
|
-
mycl.AddRange(mc.mycl);
|
14
13
|
}
|
15
14
|
```
|
1
Clone追記
answer
CHANGED
@@ -4,4 +4,12 @@
|
|
4
4
|
this.mycl = new List<MyClass>();
|
5
5
|
mycl.AddRange(mc.mycl.Select(i => (MyClass)i.Clone()));
|
6
6
|
}
|
7
|
-
```
|
7
|
+
```
|
8
|
+
ただし、MyClass に Clone() メソッドが実装されていないので、これだとコンパイルエラーになると思います。中の要素も複製したいのであれば、Clone() を実装してください。
|
9
|
+
中の要素の複製は必要なく、同じ要素が追加されたリストのみ複製すれば良いのであれば、次のようになります。
|
10
|
+
```C#
|
11
|
+
public void deepcopy(HogeClass mc) {
|
12
|
+
this.mycl = new List<MyClass>();
|
13
|
+
mycl.AddRange(mc.mycl);
|
14
|
+
}
|
15
|
+
```
|