誰でも以下のコードがエラーを投げる理由を説明することはできますか?演算子のオーバーロードを変更してintを受け入れるか、nullを許可するオブジェクトを使用しないようにすることで、-1の値を10進数(-1M)にキャストすることで簡単に修正できます。SEHException .net Conundrum
私は、VS2010のみVS2008でスローされるエラーを気づいた。
class Program
{
static void Main(string[] args)
{
var o1 = new MyObject?(new MyObject(2.34M));
o1 *= -1;
}
}
public struct MyObject
{
public MyObject(Decimal myValue)
{
this.myValue = myValue;
}
private Decimal myValue;
public static MyObject operator *(MyObject value1, decimal value2)
{
value1.myValue *= value2;
return value1;
}
}
ありあり申し訳ありませんが、演算子のオーバーロードは10進数を除いている必要があります。ただし、intは問題ありません。メソッドの実装は正しいですが、MyObjectはそれにもっと多くのプロパティを簡単に持たせることができ、新しいオブジェクト(例のように)を返すことでこれらの値を失います。 – CeejeeB