回答編集履歴

2

見直しキャンペーン中

2023/07/30 07:17

投稿

TN8001
TN8001

スコア9350

test CHANGED
@@ -6,7 +6,7 @@
6
6
  それ以上(.NET7・あるいは.NET6 Preview)はダメですかね?^^;
7
7
 
8
8
  注)ぶっちゃけ何もわかってません^^;
9
- ```C#
9
+ ```cs
10
10
  var a = new Complex<double>(1, 0);
11
11
  var b = new Complex<double>(0, 1);
12
12
  Console.WriteLine(a + b); // (1, 1)
@@ -47,7 +47,7 @@
47
47
  > となるとComplex<T>がIAdditionOperatorsになるみたいなことになるんでしょうか?(ほんとになんもわかってません^^;
48
48
 
49
49
  これでいいんすね(難しく考えすぎてました。そのうえコメント時にも、ちゃんと質問を読めてませんでした^^;
50
- ```C#
50
+ ```cs
51
51
  Complex<int> c1 = new(1, 2);
52
52
  Complex<double> c2 = new(0.1, 0.2);
53
53
 

1

implicit operator

2022/04/24 20:34

投稿

TN8001
TN8001

スコア9350

test CHANGED
@@ -40,3 +40,27 @@
40
40
  .NET 6.0.300-preview.22204.3
41
41
  [NuGet Gallery | System.Runtime.Experimental 6.0.2](https://www.nuget.org/packages/System.Runtime.Experimental/6.0.2)
42
42
 
43
+ ---
44
+
45
+ >> ちょっと違うんじゃないでしょうか。
46
+ > あ、すいません。下のほう読んでませんでした^^;
47
+ > となるとComplex<T>がIAdditionOperatorsになるみたいなことになるんでしょうか?(ほんとになんもわかってません^^;
48
+
49
+ これでいいんすね(難しく考えすぎてました。そのうえコメント時にも、ちゃんと質問を読めてませんでした^^;
50
+ ```C#
51
+ Complex<int> c1 = new(1, 2);
52
+ Complex<double> c2 = new(0.1, 0.2);
53
+
54
+ Complex<double> result = c1 + c2;
55
+ Console.WriteLine(result); // Complex { Re = 1.1, Im = 2.2 }
56
+
57
+
58
+ record struct Complex<T>(T Re, T Im) where T : INumber<T>
59
+ {
60
+ public static Complex<T> operator +(Complex<T> left, Complex<T> right)
61
+ => new(left.Re + right.Re, left.Im + right.Im);
62
+
63
+ public static implicit operator Complex<double>(Complex<T> other)
64
+ => new(double.Create(other.Re), double.Create(other.Im));
65
+ }
66
+ ```