Discriminated Unions в C#
#39845659
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
Участник
Откуда: Москва
Сообщения: 3 430
|
|
hVostt,
Во вполне обычные классы.
1. 2. 3. 4.
type Shape =
| Rectangle of width : float * length : float
| Circle of radius : float
| Prism of width : float * float * height : float
f# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784. 785. 786. 787. 788. 789. 790. 791. 792. 793. 794. 795. 796. 797. 798.
// Program.Shape
using Microsoft.FSharp.Core;
using System;
using System.Collections;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[Serializable]
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
[DebuggerDisplay("{__DebugDisplay(),nq}")]
[CompilationMapping(/*Could not decode attribute arguments.*/)]
public abstract class Shape : IEquatable<Shape>, IStructuralEquatable, IComparable<Shape>, IComparable, IStructuralComparable
{
public static class Tags
{
public const int Rectangle = 0;
public const int Circle = 1;
public const int Prism = 2;
}
[Serializable]
[DebuggerTypeProxy(typeof(Rectangle@DebugTypeProxy))]
[DebuggerDisplay("{__DebugDisplay(),nq}")]
public class Rectangle : Shape
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal readonly double _width;
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal readonly double _length;
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
[field: DebuggerNonUserCode]
public double width
{
[DebuggerNonUserCode]
get;
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
[field: DebuggerNonUserCode]
public double length
{
[DebuggerNonUserCode]
get;
}
[CompilerGenerated]
[DebuggerNonUserCode]
internal Rectangle(double _width, double _length)
{
this._width = _width;
this._length = _length;
}
}
[Serializable]
[DebuggerTypeProxy(typeof(Circle@DebugTypeProxy))]
[DebuggerDisplay("{__DebugDisplay(),nq}")]
public class Circle : Shape
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal readonly double _radius;
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
[field: DebuggerNonUserCode]
public double radius
{
[DebuggerNonUserCode]
get;
}
[CompilerGenerated]
[DebuggerNonUserCode]
internal Circle(double _radius)
{
this._radius = _radius;
}
}
[Serializable]
[DebuggerTypeProxy(typeof(Prism@DebugTypeProxy))]
[DebuggerDisplay("{__DebugDisplay(),nq}")]
public class Prism : Shape
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal readonly double _width;
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal readonly double item2;
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal readonly double _height;
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
[field: DebuggerNonUserCode]
public double width
{
[DebuggerNonUserCode]
get;
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
[field: DebuggerNonUserCode]
public double Item2
{
[DebuggerNonUserCode]
get;
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
[field: DebuggerNonUserCode]
public double height
{
[DebuggerNonUserCode]
get;
}
[CompilerGenerated]
[DebuggerNonUserCode]
internal Prism(double _width, double item2, double _height)
{
this._width = _width;
this.item2 = item2;
this._height = _height;
}
}
internal class Rectangle@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal Rectangle _obj;
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
public double width
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return _obj._width;
}
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
public double length
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return _obj._length;
}
}
[CompilerGenerated]
[DebuggerNonUserCode]
public Rectangle@DebugTypeProxy(Rectangle obj)
{
_obj = obj;
}
}
internal class Circle@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal Circle _obj;
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
public double radius
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return _obj._radius;
}
}
[CompilerGenerated]
[DebuggerNonUserCode]
public Circle@DebugTypeProxy(Circle obj)
{
_obj = obj;
}
}
internal class Prism@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
[CompilerGenerated]
[DebuggerNonUserCode]
internal Prism _obj;
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
public double width
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return _obj._width;
}
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
public double Item2
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return _obj.item2;
}
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
[CompilerGenerated]
[DebuggerNonUserCode]
public double height
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return _obj._height;
}
}
[CompilerGenerated]
[DebuggerNonUserCode]
public Prism@DebugTypeProxy(Prism obj)
{
_obj = obj;
}
}
[CompilerGenerated]
[DebuggerNonUserCode]
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int Tag
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return (this is Prism) ? 2 : ((this is Circle) ? 1 : 0);
}
}
[CompilerGenerated]
[DebuggerNonUserCode]
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public bool IsRectangle
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return this is Rectangle;
}
}
[CompilerGenerated]
[DebuggerNonUserCode]
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public bool IsCircle
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return this is Circle;
}
}
[CompilerGenerated]
[DebuggerNonUserCode]
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public bool IsPrism
{
[CompilerGenerated]
[DebuggerNonUserCode]
get
{
return this is Prism;
}
}
[CompilerGenerated]
[DebuggerNonUserCode]
internal Shape()
{
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
public static Shape NewRectangle(double _width, double _length)
{
return new Rectangle(_width, _length);
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
public static Shape NewCircle(double _radius)
{
return new Circle(_radius);
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
public static Shape NewPrism(double _width, double item2, double _height)
{
return new Prism(_width, item2, _height);
}
[CompilerGenerated]
[DebuggerNonUserCode]
internal object __DebugDisplay()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Shape, string>>(new PrintfFormat<FSharpFunc<Shape, string>, Unit, string, string, string>("%+0.8A")).Invoke(this);
}
[CompilerGenerated]
public override string ToString()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Shape, string>>(new PrintfFormat<FSharpFunc<Shape, string>, Unit, string, string, Shape>("%+A")).Invoke(this);
}
[CompilerGenerated]
public sealed override int CompareTo(Shape obj)
{
if (this != null)
{
if (obj != null)
{
int num = (this is Prism) ? 2 : ((this is Circle) ? 1 : 0);
int num2 = (obj is Prism) ? 2 : ((obj is Circle) ? 1 : 0);
if (num == num2)
{
if (!(this is Rectangle))
{
if (this is Circle)
{
Circle circle = (Circle)this;
Circle circle2 = (Circle)obj;
IComparer genericComparer = LanguagePrimitives.get_GenericComparer();
double radius = circle._radius;
double radius2 = circle2._radius;
if (radius < radius2)
{
return -1;
}
if (radius > radius2)
{
return 1;
}
if (radius == radius2)
{
return 0;
}
return HashCompare.GenericComparisonWithComparerIntrinsic<double>(genericComparer, radius, radius2);
}
if (this is Prism)
{
Prism prism = (Prism)this;
Prism prism2 = (Prism)obj;
IComparer genericComparer2 = LanguagePrimitives.get_GenericComparer();
double width = prism._width;
double width2 = prism2._width;
int num3 = (width < width2) ? (-1) : ((width > width2) ? 1 : ((width != width2) ? HashCompare.GenericComparisonWithComparerIntrinsic<double>(genericComparer2, width, width2) : 0));
if (num3 < 0)
{
return num3;
}
if (num3 > 0)
{
return num3;
}
IComparer genericComparer3 = LanguagePrimitives.get_GenericComparer();
double item = prism.item2;
double item2 = prism2.item2;
int num4 = (item < item2) ? (-1) : ((item > item2) ? 1 : ((item != item2) ? HashCompare.GenericComparisonWithComparerIntrinsic<double>(genericComparer3, item, item2) : 0));
if (num4 < 0)
{
return num4;
}
if (num4 > 0)
{
return num4;
}
IComparer genericComparer4 = LanguagePrimitives.get_GenericComparer();
double height = prism._height;
double height2 = prism2._height;
if (height < height2)
{
return -1;
}
if (height > height2)
{
return 1;
}
if (height == height2)
{
return 0;
}
return HashCompare.GenericComparisonWithComparerIntrinsic<double>(genericComparer4, height, height2);
}
}
Rectangle rectangle = (Rectangle)this;
Rectangle rectangle2 = (Rectangle)obj;
IComparer genericComparer5 = LanguagePrimitives.get_GenericComparer();
double width3 = rectangle._width;
double width4 = rectangle2._width;
int num5 = (width3 < width4) ? (-1) : ((width3 > width4) ? 1 : ((width3 != width4) ? HashCompare.GenericComparisonWithComparerIntrinsic<double>(genericComparer5, width3, width4) : 0));
if (num5 < 0)
{
return num5;
}
if (num5 > 0)
{
return num5;
}
IComparer genericComparer6 = LanguagePrimitives.get_GenericComparer();
double length = rectangle._length;
double length2 = rectangle2._length;
if (length < length2)
{
return -1;
}
if (length > length2)
{
return 1;
}
if (length == length2)
{
return 0;
}
return HashCompare.GenericComparisonWithComparerIntrinsic<double>(genericComparer6, length, length2);
}
return num - num2;
}
return 1;
}
if (obj != null)
{
return -1;
}
return 0;
}
[CompilerGenerated]
public sealed override int CompareTo(object obj)
{
return CompareTo((Shape)obj);
}
[CompilerGenerated]
public sealed override int CompareTo(object obj, IComparer comp)
{
Shape shape = (Shape)obj;
if (this != null)
{
if ((Shape)obj != null)
{
int num = (this is Prism) ? 2 : ((this is Circle) ? 1 : 0);
Shape shape2 = shape;
int num2 = (shape2 is Prism) ? 2 : ((shape2 is Circle) ? 1 : 0);
if (num == num2)
{
if (!(this is Rectangle))
{
if (this is Circle)
{
Circle circle = (Circle)this;
Circle circle2 = (Circle)shape;
double radius = circle._radius;
double radius2 = circle2._radius;
if (radius < radius2)
{
return -1;
}
if (radius > radius2)
{
return 1;
}
if (radius == radius2)
{
return 0;
}
return HashCompare.GenericComparisonWithComparerIntrinsic<double>(comp, radius, radius2);
}
if (this is Prism)
{
Prism prism = (Prism)this;
Prism prism2 = (Prism)shape;
double width = prism._width;
double width2 = prism2._width;
int num3 = (width < width2) ? (-1) : ((width > width2) ? 1 : ((width != width2) ? HashCompare.GenericComparisonWithComparerIntrinsic<double>(comp, width, width2) : 0));
if (num3 < 0)
{
return num3;
}
if (num3 > 0)
{
return num3;
}
double item = prism.item2;
double item2 = prism2.item2;
int num4 = (item < item2) ? (-1) : ((item > item2) ? 1 : ((item != item2) ? HashCompare.GenericComparisonWithComparerIntrinsic<double>(comp, item, item2) : 0));
if (num4 < 0)
{
return num4;
}
if (num4 > 0)
{
return num4;
}
double height = prism._height;
double height2 = prism2._height;
if (height < height2)
{
return -1;
}
if (height > height2)
{
return 1;
}
if (height == height2)
{
return 0;
}
return HashCompare.GenericComparisonWithComparerIntrinsic<double>(comp, height, height2);
}
}
Rectangle rectangle = (Rectangle)this;
Rectangle rectangle2 = (Rectangle)shape;
double width3 = rectangle._width;
double width4 = rectangle2._width;
int num5 = (width3 < width4) ? (-1) : ((width3 > width4) ? 1 : ((width3 != width4) ? HashCompare.GenericComparisonWithComparerIntrinsic<double>(comp, width3, width4) : 0));
if (num5 < 0)
{
return num5;
}
if (num5 > 0)
{
return num5;
}
double length = rectangle._length;
double length2 = rectangle2._length;
if (length < length2)
{
return -1;
}
if (length > length2)
{
return 1;
}
if (length == length2)
{
return 0;
}
return HashCompare.GenericComparisonWithComparerIntrinsic<double>(comp, length, length2);
}
return num - num2;
}
return 1;
}
if ((Shape)obj != null)
{
return -1;
}
return 0;
}
[CompilerGenerated]
public sealed override int GetHashCode(IEqualityComparer comp)
{
if (this != null)
{
int num = 0;
if (!(this is Rectangle))
{
if (this is Circle)
{
Circle circle = (Circle)this;
num = 1;
return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<double>(comp, circle._radius) + ((num << 6) + (num >> 2)));
}
if (this is Prism)
{
Prism prism = (Prism)this;
num = 2;
num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<double>(comp, prism._height) + ((num << 6) + (num >> 2)));
num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<double>(comp, prism.item2) + ((num << 6) + (num >> 2)));
return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<double>(comp, prism._width) + ((num << 6) + (num >> 2)));
}
}
Rectangle rectangle = (Rectangle)this;
num = 0;
num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<double>(comp, rectangle._length) + ((num << 6) + (num >> 2)));
return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<double>(comp, rectangle._width) + ((num << 6) + (num >> 2)));
}
return 0;
}
[CompilerGenerated]
public sealed override int GetHashCode()
{
return GetHashCode(LanguagePrimitives.get_GenericEqualityComparer());
}
[CompilerGenerated]
public sealed override bool Equals(object obj, IEqualityComparer comp)
{
if (this != null)
{
Shape shape = obj as Shape;
if (shape != null)
{
Shape shape2 = shape;
int num = (this is Prism) ? 2 : ((this is Circle) ? 1 : 0);
Shape shape3 = shape2;
int num2 = (shape3 is Prism) ? 2 : ((shape3 is Circle) ? 1 : 0);
if (num == num2)
{
if (!(this is Rectangle))
{
if (this is Circle)
{
Circle circle = (Circle)this;
Circle circle2 = (Circle)shape2;
return circle._radius == circle2._radius;
}
if (this is Prism)
{
Prism prism = (Prism)this;
Prism prism2 = (Prism)shape2;
if (prism._width == prism2._width)
{
if (prism.item2 == prism2.item2)
{
return prism._height == prism2._height;
}
return false;
}
return false;
}
}
Rectangle rectangle = (Rectangle)this;
Rectangle rectangle2 = (Rectangle)shape2;
if (rectangle._width == rectangle2._width)
{
return rectangle._length == rectangle2._length;
}
return false;
}
return false;
}
return false;
}
return obj == null;
}
[CompilerGenerated]
public sealed override bool Equals(Shape obj)
{
if (this != null)
{
if (obj != null)
{
int num = (this is Prism) ? 2 : ((this is Circle) ? 1 : 0);
int num2 = (obj is Prism) ? 2 : ((obj is Circle) ? 1 : 0);
if (num == num2)
{
if (!(this is Rectangle))
{
if (this is Circle)
{
Circle circle = (Circle)this;
Circle circle2 = (Circle)obj;
double radius = circle._radius;
double radius2 = circle2._radius;
if (radius == radius2)
{
return true;
}
if (radius != radius)
{
return radius2 != radius2;
}
return false;
}
if (this is Prism)
{
Prism prism = (Prism)this;
Prism prism2 = (Prism)obj;
double width = prism._width;
double width2 = prism2._width;
if (width == width2 || (width != width && width2 != width2))
{
double item = prism.item2;
double item2 = prism2.item2;
if (item == item2 || (item != item && item2 != item2))
{
double height = prism._height;
double height2 = prism2._height;
if (height == height2)
{
return true;
}
if (height != height)
{
return height2 != height2;
}
return false;
}
return false;
}
return false;
}
}
Rectangle rectangle = (Rectangle)this;
Rectangle rectangle2 = (Rectangle)obj;
double width3 = rectangle._width;
double width4 = rectangle2._width;
if (width3 == width4 || (width3 != width3 && width4 != width4))
{
double length = rectangle._length;
double length2 = rectangle2._length;
if (length == length2)
{
return true;
}
if (length != length)
{
return length2 != length2;
}
return false;
}
return false;
}
return false;
}
return false;
}
return obj == null;
}
[CompilerGenerated]
public sealed override bool Equals(object obj)
{
Shape shape = obj as Shape;
if (shape != null)
{
return Equals(shape);
}
return false;
}
}
|
|