From 3519b2be87b4c1e9b14aa3d8809fb8b87e2306ce Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Fri, 18 Jun 2021 08:21:32 +0200 Subject: [PATCH] refactored null-checks to null-coalescing operator --- HashingTool/ViewModel/UserControl/XMLFileSelector.cs | 2 +- VectoCommon/VectoCommon/Utils/Validation.cs | 8 ++++---- VectoCommon/VectoHashing/VectoHash.cs | 2 +- .../VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs | 2 +- .../VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs | 4 +--- .../FileIO/XMLReports/XMLManufacturerReportReader.cs | 4 ++-- .../Reader/DataObjectAdapter/EngineeringDataAdapter.cs | 2 +- .../VectoCore/Models/Simulation/Data/VectoRunData.cs | 2 +- .../VectoCore/Models/Simulation/Impl/SimulatorFactory.cs | 2 +- .../Models/SimulationComponent/Data/Gearbox/GearData.cs | 6 +++--- .../SimulationComponent/Data/Gearbox/ShiftPolygon.cs | 2 +- .../SimulationComponent/Data/SimulationComponentData.cs | 6 +++--- .../Models/SimulationComponent/Impl/AMTShiftStrategy.cs | 2 +- .../Models/SimulationComponent/Impl/CycleGearbox.cs | 8 ++------ .../SimulationComponent/Impl/PEVAMTShiftStrategy.cs | 2 +- .../VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs | 2 +- .../Impl/VelocitySpeedGearshiftPreprocessor.cs | 2 +- VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs | 2 +- VectoCore/VectoCore/OutputData/ModalDataContainer.cs | 4 ++-- VectoCore/VectoCore/Utils/DelaunayMap.cs | 8 ++++---- 20 files changed, 33 insertions(+), 39 deletions(-) diff --git a/HashingTool/ViewModel/UserControl/XMLFileSelector.cs b/HashingTool/ViewModel/UserControl/XMLFileSelector.cs index bfcf55f7a8..30d3d6be33 100644 --- a/HashingTool/ViewModel/UserControl/XMLFileSelector.cs +++ b/HashingTool/ViewModel/UserControl/XMLFileSelector.cs @@ -290,7 +290,7 @@ namespace HashingTool.ViewModel.UserControl ? Environment.NewLine + e.Exception.InnerException.Message : "") : e.ValidationEventArgs.Message, - e.ValidationEventArgs == null ? 0 : e.ValidationEventArgs.Exception.LineNumber)); + e.ValidationEventArgs?.Exception.LineNumber ?? 0)); } } ); diff --git a/VectoCommon/VectoCommon/Utils/Validation.cs b/VectoCommon/VectoCommon/Utils/Validation.cs index 7eed7002cd..ebfe5f6b5d 100644 --- a/VectoCommon/VectoCommon/Utils/Validation.cs +++ b/VectoCommon/VectoCommon/Utils/Validation.cs @@ -185,11 +185,11 @@ namespace TUGraz.VectoCommon.Utils var validationService = validationContext.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer; - var mode = validationService != null ? validationService.Mode : ExecutionMode.Declaration; + var mode = validationService?.Mode ?? ExecutionMode.Declaration; var gbxType = validationService != null ? validationService.GearboxType : GearboxType.MT; var isEmsCycle = validationService != null && validationService.IsEMSCycle; - var jobType = validationService != null ? validationService.JobType : VectoSimulationJobType.ConventionalVehicle; - var emPos = validationService != null ? validationService.EMPowertrainPosition : (PowertrainPosition?)null; + var jobType = validationService?.JobType ?? VectoSimulationJobType.ConventionalVehicle; + var emPos = validationService?.EMPowertrainPosition; var enumerable = value as IEnumerable; if (enumerable != null) { @@ -411,7 +411,7 @@ namespace TUGraz.VectoCommon.Utils } var validationService = validationContext.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer; - var mode = validationService != null ? validationService.Mode : (ExecutionMode?)null; + var mode = validationService?.Mode; var emsMode = validationService != null && validationService.IsEMSCycle; if (!_emsMission.HasValue || _emsMission.Value == emsMode) { diff --git a/VectoCommon/VectoHashing/VectoHash.cs b/VectoCommon/VectoHashing/VectoHash.cs index be5bb557ff..f7e9cbaf24 100644 --- a/VectoCommon/VectoHashing/VectoHash.cs +++ b/VectoCommon/VectoHashing/VectoHash.cs @@ -113,7 +113,7 @@ namespace TUGraz.VectoHashing foreach (var component in EnumHelper.GetValues<VectoComponents>()) { var nodes = Document.SelectNodes(string.Format("//*[local-name()='{0}']//*[local-name()='{1}']", XMLNames.VectoInputDeclaration, component.XMLElementName())); - var count = nodes == null ? 0 : nodes.Count; + var count = nodes?.Count ?? 0; for (var i = 0; i < count; i++) { retVal.Add(component); } diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs index 3d039c3d1b..87fdde345f 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs @@ -265,7 +265,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON $"Gear {gearNr} LossMap") : null, Efficiency = nextEfficiency, - MaxTorque = gear["MaxTorque"] != null ? gear["MaxTorque"].Value<double>().SI<NewtonMeter>() : null, + MaxTorque = gear["MaxTorque"]?.Value<double>().SI<NewtonMeter>(), ShiftPolygon = ReadTableData(gear.GetEx<string>(JsonKeys.Gearbox_Gear_ShiftPolygonFile), $"Gear {gearNr} shiftPolygon", false), }; diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index 56a5b1d3a9..1469c5ea0b 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -225,9 +225,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public string LegislativeCategory => null; public virtual LegislativeClass? LegislativeClass => - Body["LegislativeClass"] != null - ? Body["LegislativeClass"].Value<string>().ParseEnum<LegislativeClass>() - : VectoCommon.Models.LegislativeClass.Unknown; + Body["LegislativeClass"]?.Value<string>().ParseEnum<LegislativeClass>() ?? VectoCommon.Models.LegislativeClass.Unknown; public virtual VehicleCategory VehicleCategory => (VehicleCategory)Enum.Parse(typeof(VehicleCategory), Body[JsonKeys.Vehicle_VehicleCategory].Value<string>(), true); diff --git a/VectoCore/VectoCore/InputData/FileIO/XMLReports/XMLManufacturerReportReader.cs b/VectoCore/VectoCore/InputData/FileIO/XMLReports/XMLManufacturerReportReader.cs index d64f9942d0..eb989f43c3 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XMLReports/XMLManufacturerReportReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XMLReports/XMLManufacturerReportReader.cs @@ -46,7 +46,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration foreach (var component in EnumHelper.GetValues<VectoComponents>()) { var nodes = xmlDocument.SelectNodes(string.Format("//*[local-name()='{0}']//*[local-name()='{1}']/*[local-name()='Model']", XMLNames.VectoManufacturerReport, component.XMLElementName())); - var count = nodes == null ? 0 : nodes.Count; + var count = nodes?.Count ?? 0; for (var i = 0; i < count; i++) { retVal.Add(component); } @@ -54,7 +54,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration foreach (var component in new[] { XMLNames.AxleWheels_Axles_Axle }) { var nodes = xmlDocument.SelectNodes(string.Format("//*[local-name()='{0}']//*[local-name()='{1}']", XMLNames.VectoManufacturerReport, component)); - var count = nodes == null ? 0 : nodes.Count; + var count = nodes?.Count ?? 0; for (var i = 0; i < count; i++) { retVal.Add(VectoComponents.Tyre); } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index 13e7cf0bf8..69f78b39bc 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -204,7 +204,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter (gbx != null && gbx.Type.AutomaticTransmission() ? torqueConverter.Inertia : 0.SI<KilogramSquareMeter>()); retVal.EngineStartTime = engine.EngineStartTime ?? DeclarationData.Engine.DefaultEngineStartTime; var limits = torqueLimits.ToDictionary(e => e.Gear); - var numGears = gbx == null ? 0 : gbx.Gears.Count; + var numGears = gbx?.Gears.Count ?? 0; var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1); fullLoadCurves[0] = FullLoadCurveReader.Create(engine.EngineModes.First().FullLoadCurve); fullLoadCurves[0].EngineData = retVal; diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs index 905b0f873a..5fb3957afd 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs @@ -246,7 +246,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data var angledriveRatio = hasAngleDrive && angledriveData.Type == AngledriveType.SeparateAngledrive ? angledriveData.Angledrive.Ratio : 1.0; - var axlegearRatio = axleGearData != null ? axleGearData.AxleGear.Ratio : 1.0; + var axlegearRatio = axleGearData?.AxleGear.Ratio ?? 1.0; var dynamicTyreRadius = runData.VehicleData != null ? runData.VehicleData.DynamicTyreRadius : 0.0.SI<Meter>(); var vehicleMaxSpeed = runData.EngineData.FullLoadCurves[0].N95hSpeed / diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index 3f301f8510..3d7b1243e3 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -264,7 +264,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl if (Validate) { ValidateVectoRunData( - run, data.JobType, data.ElectricMachinesData.FirstOrDefault()?.Item1, data.GearboxData == null ? (GearboxType?)null : data.GearboxData.Type, + run, data.JobType, data.ElectricMachinesData.FirstOrDefault()?.Item1, data.GearboxData?.Type, data.Mission != null && data.Mission.MissionType.IsEMS()); } return run; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/GearData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/GearData.cs index 466874138e..6a33c200e9 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/GearData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/GearData.cs @@ -76,11 +76,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox { var validationService = context.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer; - var mode = validationService != null ? validationService.Mode : ExecutionMode.Declaration; + var mode = validationService?.Mode ?? ExecutionMode.Declaration; var gbxType = validationService != null ? validationService.GearboxType : GearboxType.MT; var emsMission = validationService != null && validationService.IsEMSCycle; - var jobType = validationService != null ? validationService.JobType : VectoSimulationJobType.ConventionalVehicle; - var emPos = validationService != null ? validationService.EMPowertrainPosition : (PowertrainPosition?)null; + var jobType = validationService?.JobType ?? VectoSimulationJobType.ConventionalVehicle; + var emPos = validationService?.EMPowertrainPosition; if (gearData.HasTorqueConverter) { if (gearData.TorqueConverterShiftPolygon == null) { diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/ShiftPolygon.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/ShiftPolygon.cs index 2702ca1cf1..20536240d6 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/ShiftPolygon.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/ShiftPolygon.cs @@ -158,7 +158,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox { var validationService = validationContext.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer; - var gbxType = validationService != null ? validationService.GearboxType : null; + var gbxType = validationService?.GearboxType; if (gbxType == null || gbxType.Value.AutomaticTransmission()) { return ValidationResult.Success; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs index 565fa8c12e..51d3fd0374 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs @@ -57,7 +57,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data { var validationService = context.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer; - return validationService == null ? ExecutionMode.Declaration : validationService.Mode; + return validationService?.Mode ?? ExecutionMode.Declaration; } protected static bool GetEmsMode(ValidationContext context) @@ -71,7 +71,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data { var validationService = context.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer; - return validationService != null ? validationService.JobType : VectoSimulationJobType.ConventionalVehicle; + return validationService?.JobType ?? VectoSimulationJobType.ConventionalVehicle; } @@ -79,7 +79,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data { var validationService = context.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer; - return validationService != null ? validationService.EMPowertrainPosition : (PowertrainPosition?)null; + return validationService?.EMPowertrainPosition; } } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategy.cs index 957eb1897f..3019637148 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategy.cs @@ -64,7 +64,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl return; } var transmissionRatio = runData.AxleGearData.AxleGear.Ratio * - (runData.AngledriveData == null ? 1.0 : runData.AngledriveData.Angledrive.Ratio) / + (runData.AngledriveData?.Angledrive.Ratio ?? 1.0) / runData.VehicleData.DynamicTyreRadius; var minEngineSpeed = (runData.EngineData.FullLoadCurves[0].RatedSpeed - runData.EngineData.IdleSpeed) * Constants.SimulationSettings.ClutchClosingSpeedNorm + runData.EngineData.IdleSpeed; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleGearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleGearbox.cs index 68535805d4..a30715f387 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleGearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleGearbox.cs @@ -89,9 +89,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { var dt = Constants.SimulationSettings.TargetTimeInterval; - var tcLocked = DataBus.DrivingCycleInfo.CycleData.LeftSample.TorqueConverterActive != null - ? !DataBus.DrivingCycleInfo.CycleData.LeftSample.TorqueConverterActive - : null; + var tcLocked = !DataBus.DrivingCycleInfo.CycleData.LeftSample.TorqueConverterActive; Gear = new GearshiftPosition(GetGearFromCycle(), tcLocked); if (TorqueConverter != null && Gear.TorqueConverterLocked == null) { @@ -206,9 +204,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { Disengaged = null; - var tcLocked = DataBus.DrivingCycleInfo.CycleData.LeftSample.TorqueConverterActive != null - ? !DataBus.DrivingCycleInfo.CycleData.LeftSample.TorqueConverterActive - : null; + var tcLocked = !DataBus.DrivingCycleInfo.CycleData.LeftSample.TorqueConverterActive; Gear = new GearshiftPosition(GetGearFromCycle(), tcLocked); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs index b9689796aa..a5f0127cdb 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs @@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl SkipGears = true; TransmissionRatio = runData.AxleGearData.AxleGear.Ratio * - (runData.AngledriveData == null ? 1.0 : runData.AngledriveData.Angledrive.Ratio) / + (runData.AngledriveData?.Angledrive.Ratio ?? 1.0) / runData.VehicleData.DynamicTyreRadius; //var minEngineSpeed = (runData.EngineData.FullLoadCurves[0].RatedSpeed - runData.EngineData.IdleSpeed) * // Constants.SimulationSettings.ClutchClosingSpeedNorm + runData.EngineData.IdleSpeed; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs index 45b6c89e99..ea80b53019 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs @@ -174,7 +174,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl return; } var transmissionRatio = RunData.AxleGearData.AxleGear.Ratio * - (RunData.AngledriveData == null ? 1.0 : RunData.AngledriveData.Angledrive.Ratio) / + (RunData.AngledriveData?.Angledrive.Ratio ?? 1.0) / RunData.VehicleData.DynamicTyreRadius; var cardanStartSpeed = (RunData.GearshiftParameters.StartSpeed * transmissionRatio).Cast<PerSecond>(); var minEngineSpeed = (RunData.EngineData.FullLoadCurves[0].RatedSpeed - RunData.EngineData.IdleSpeed) * diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs index 56ff12176d..cc71009281 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs @@ -127,7 +127,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var angledriveRatio = hasAngleDrive && angledriveData.Type == AngledriveType.SeparateAngledrive ? angledriveData.Angledrive.Ratio : 1.0; - var axlegearRatio = axleGearData != null ? axleGearData.AxleGear.Ratio : 1.0; + var axlegearRatio = axleGearData?.AxleGear.Ratio ?? 1.0; var dynamicTyreRadius = runData.VehicleData != null ? runData.VehicleData.DynamicTyreRadius : 0.0.SI<Meter>(); var vehicleMaxSpeed = GetMaxMotorspeed(runData) / diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs index 9f94868905..f44fe10656 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs @@ -390,7 +390,7 @@ public class JSONFileWriter : IOutputFileWriter { "EcoRoll", vehicle.ADAS.EcoRoll.ToString() }, { "PredictiveCruiseControl", vehicle.ADAS.PredictiveCruiseControl.ToString() }, { "ATEcoRollReleaseLockupClutch", - vehicle.ADAS.ATEcoRollReleaseLockupClutch.HasValue ? vehicle.ADAS.ATEcoRollReleaseLockupClutch.Value : false + vehicle.ADAS.ATEcoRollReleaseLockupClutch ?? false } }; if (airdrag.AirDragArea != null) diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 1267d1d2c6..43c458c508 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -174,12 +174,12 @@ namespace TUGraz.VectoCore.OutputData public VectoRun.Status RunStatus { get; protected set; } - public string Error => SimException == null ? null : SimException.Message; + public string Error => SimException?.Message; public string StackTrace => SimException == null ? null - : (SimException.StackTrace ?? (SimException.InnerException != null ? SimException.InnerException.StackTrace : null)); + : (SimException.StackTrace ?? SimException.InnerException?.StackTrace); public void Reset() diff --git a/VectoCore/VectoCore/Utils/DelaunayMap.cs b/VectoCore/VectoCore/Utils/DelaunayMap.cs index 4ce3f5bd88..c9e483cd32 100644 --- a/VectoCore/VectoCore/Utils/DelaunayMap.cs +++ b/VectoCore/VectoCore/Utils/DelaunayMap.cs @@ -180,10 +180,10 @@ namespace TUGraz.VectoCore.Utils private static void DrawGraph(int i, IEnumerable<Triangle> triangles, Triangle superTriangle, Point[] points, Point lastPoint = null) { - var xmin = Math.Min(points.Min(p => p.X), lastPoint != null ? lastPoint.X : double.NaN); - var xmax = Math.Max(points.Max(p => p.X), lastPoint != null ? lastPoint.X : double.NaN); - var ymin = Math.Min(points.Min(p => p.Y), lastPoint != null ? lastPoint.Y : double.NaN); - var ymax = Math.Max(points.Max(p => p.Y), lastPoint != null ? lastPoint.Y : double.NaN); + var xmin = Math.Min(points.Min(p => p.X), lastPoint?.X ?? double.NaN); + var xmax = Math.Max(points.Max(p => p.X), lastPoint?.X ?? double.NaN); + var ymin = Math.Min(points.Min(p => p.Y), lastPoint?.Y ?? double.NaN); + var ymax = Math.Max(points.Max(p => p.Y), lastPoint?.Y ?? double.NaN); using (var chart = new Chart { Width = 1000, Height = 1000 }) { chart.ChartAreas.Add(new ChartArea("main") { -- GitLab