2016-04-04 10 views
1

私はC#でWindowsフォームを使用してプログラムを作成しています。私はmyPointと宣言し、myFormのパブリックデータメンバーと宣言しました。 「ポイントを」:私はエラーを取得するポイント構造の値を削除する方法は?

if (myPoint.IsEmpty) 
    myPoint = new Point(//position); 
else 
{ 
    //operation involving myPoint 
    myPoint = null; //WHICH RETURNS THE ERROR 
} 

:私はあるmyFormのプライベートメソッドとしてFOOを宣言このメソッドの内部で、私は次のように書く必要があり、(実際には、クリックイベントがあります)

私は動的メモリ管理についていくつかの資料を読んでいますが、これまでのところこのようなことは見つけられません。私が考えることができるのは、Point構造をカスタム構造に置き換えることです。これは理想的ではありません。何か案は?

+1

'Point'は構造体であり、値型です。値の型をNULLに設定することはできません –

+0

私はここで非常に明確な答えを見つけました:https://social.msdn.microsoft.com/Forums/vstudio/en/US/340786b7-730f-4f06-980f-84194c6e9533/どのようにdo-do-you-clear-a-struct-empty-a-struct-?フォーラム= csharpgeneral – maja

答えて

5

Pointは構造体なので、常に値を持ちます。あなたはPoint.Emptyを割り当てることを選択する、またはNULL可能タイプ使用することができます

Point? p = null; 
1

パトリックが指摘したように、System.Drawing.Pointstructあるが、常にこののが値を持っている、またはより良いので、それはした値です定義。

それはIsEmptyあなたがPoint.EmptyにごmyPoint変数を設定することができればそれはあなたが達成しようとしているが、あなたはあなたのmyPointをテストしているので、本当にはっきりしていない:

myPoint = Point.Empty; 

または(Pointは、いくつかのためのものですので、奇妙な理由が変更可能構造体)変数のプロパティを0に設定することができます。

myPoint.X = 0; 
myPoint.Y = 0; 

または、パトリックが提案したように、null可のPointPoint? myPoint = null;)を使用してください。

あなたにとって最良の解決策は、達成しようとしていることによって異なります。