そうです:
int lowIndex = 0;
int highIndex = 1;
if ( end[0].X.ConvertToMillimetres() == end[1].X.ConvertToMillimetres()
&& end[0].Y.ConvertToMillimetres() > end[1].Y.ConvertToMillimetres()
|| end[0].X.ConvertToMillimetres() != end[1].X.ConvertToMillimetres()
&& end[0].X.ConvertToMillimetres() > end[1].X.ConvertToMillimetres())
{
lowIndex = 1;
highIndex = 0;
}
end[0].X.ConvertToMillimetres() != end[1].X.ConvertToMillimetres()
&& end[0].X.ConvertToMillimetres() > end[1].X.ConvertToMillimetres()
は常にと同等end[0].X.ConvertToMillimetres() > end[1].X.ConvertToMillimetres()
であるため、次のようになります。
int lowIndex = 0;
int highIndex = 1;
if ( end[0].X.ConvertToMillimetres() == end[1].X.ConvertToMillimetres()
&& end[0].Y.ConvertToMillimetres() > end[1].Y.ConvertToMillimetres()
|| end[0].X.ConvertToMillimetres() > end[1].X.ConvertToMillimetres())
{
lowIndex = 1;
highIndex = 0;
}
最後に、ConvertToMillimetresの結果がどのようなものか、それがどれほど複雑かはわかりません/ ConvertToMillimetresが、計算を減らすためにこれらのメソッドの値をキャプチャするためにいくつかのローカル変数を使用するのに時間がかかる場合は、理にかなっているかもしれません。少し時間を節約するためにローカルスコープを汚染する価値はないかもしれません。おそらく、それはかなり些細な機能なので、あまり有利ではありません。(ただし、クリシュナが言ったように、end[0]とend1はローカル変数としてより適切に機能する可能性があります。または、 end1.Xとend1.Yなどです。ただし、そうすると、結果が保存される可能性があります。)
//capture values
var end0Xm = end[0].X.ConvertToMillimetres();
var end1Xm = end[1].X.ConvertToMillimetres();
var end0Ym = end[0].Y.ConvertToMillimetres();
var end1Ym = end[1].Y.ConvertToMillimetres();
//define proper lowIndex, highIndex
int lowIndex = 0;
int highIndex = 1;
if ( end0Xm == end1Xm
&& end0Ym > end1Ym
|| end0Xm > end1Xm )
{
lowIndex = 1;
highIndex = 0;
}
テストの結果を将来の使用のために保存しておくと便利な場合があります。これにより、ifブロックが排除され、将来誰かが混乱する可能性が低くなります。ただし、それでも条件付きで何かを行う必要があります。この次のコードブロックは、 C#の三項演算子の存在と理解があることを前提としています。
var end0Xm = end[0].X.ConvertToMillimetres();
var end1Xm = end[1].X.ConvertToMillimetres();
var end0Ym = end[0].Y.ConvertToMillimetres();
var end1Ym = end[1].Y.ConvertToMillimetres();
//define proper lowIndex, highIndex
bool testCase = (end0Xm == end1Xm
&& end0Ym > end1Ym
|| end0Xm > end1Xm);
int lowIndex = testCase? 1 : 0;
int highIndex = testCase? 0 : 1;
または多分あなたは好むhighIndex = !testcase? 1: 0
、あるいはhighIndex = 1 - lowIndex
。
Etceteraなど。