Skip to main content
added 480 characters in body
Source Link
Woody1193
  • 8.2k
  • 9
  • 65
  • 129

In C#, the ?, when used after a type, indicates that the variable associated with the type can be null or a concrete value. The function you wrote, calcFcl, has a signature that takes three floats and produces a float as output. However, when you call it, you're providing it with a float? as the first argument. Since floating-point operations with null values aren't valid, the compiler doesn't know what to do when this is the case.

There are three ways you can address this issue:

  1. Change InputCutOffFrequency so that it is of type float instead of type float?.
  2. Change how you call calcFc1 so that you send the value of InputCutOffFrequency instead of the nullable value:
 // Force a value (this will throw an InvalidOperationException if `InputCutOffFrequency is null) fc1 = calcFc1(InputCutOffFrequency.Value, InputFS, InputTransitionBand);   // Coalesce the value (this will force a value, but you need to be sure it's the one you want) fcl = calcFcl(InputCutOffFrequency ?? 0, InputFS, InputTransitionBand); 
  1. Change the signature of calcFcl so that it accepts, for its first argument, a value of float? and then modify the function body so that it handles the case where the first argument is null.
public float calcFc1(float? f, float fs, float transition) { float _f = (f ?? 0) + (transition / 2); _f /= fs; return _f; } 

In this case, the f ?? 0 is coalescing f to a value. Essentially, if f is null, then 0 will be used. If f is not null, then the value in f will be used.

For more information on nullable types in C#, feel free to check out the documentation.

In C#, the ?, when used after a type, indicates that the variable associated with the type can be null or a concrete value. The function you wrote, calcFcl, has a signature that takes three floats and produces a float as output. However, when you call it, you're providing it with a float? as the first argument. Since floating-point operations with null values aren't valid, the compiler doesn't know what to do when this is the case.

There are three ways you can address this issue:

  1. Change InputCutOffFrequency so that it is of type float instead of type float?.
  2. Change how you call calcFc1 so that you send the value of InputCutOffFrequency instead of the nullable value:
fc1 = calcFc1(InputCutOffFrequency.Value, InputFS, InputTransitionBand); 
  1. Change the signature of calcFcl so that it accepts, for its first argument, a value of float? and then modify the function body so that it handles the case where the first argument is null.
public float calcFc1(float? f, float fs, float transition) { float _f = (f ?? 0) + (transition / 2); _f /= fs; return _f; } 

In this case, the f ?? 0 is coalescing f to a value. Essentially, if f is null, then 0 will be used. If f is not null, then the value in f will be used.

In C#, the ?, when used after a type, indicates that the variable associated with the type can be null or a concrete value. The function you wrote, calcFcl, has a signature that takes three floats and produces a float as output. However, when you call it, you're providing it with a float? as the first argument. Since floating-point operations with null values aren't valid, the compiler doesn't know what to do when this is the case.

There are three ways you can address this issue:

  1. Change InputCutOffFrequency so that it is of type float instead of type float?.
  2. Change how you call calcFc1 so that you send the value of InputCutOffFrequency instead of the nullable value:
 // Force a value (this will throw an InvalidOperationException if `InputCutOffFrequency is null) fc1 = calcFc1(InputCutOffFrequency.Value, InputFS, InputTransitionBand);   // Coalesce the value (this will force a value, but you need to be sure it's the one you want) fcl = calcFcl(InputCutOffFrequency ?? 0, InputFS, InputTransitionBand); 
  1. Change the signature of calcFcl so that it accepts, for its first argument, a value of float? and then modify the function body so that it handles the case where the first argument is null.
public float calcFc1(float? f, float fs, float transition) { float _f = (f ?? 0) + (transition / 2); _f /= fs; return _f; } 

In this case, the f ?? 0 is coalescing f to a value. Essentially, if f is null, then 0 will be used. If f is not null, then the value in f will be used.

For more information on nullable types in C#, feel free to check out the documentation.

Source Link
Woody1193
  • 8.2k
  • 9
  • 65
  • 129

In C#, the ?, when used after a type, indicates that the variable associated with the type can be null or a concrete value. The function you wrote, calcFcl, has a signature that takes three floats and produces a float as output. However, when you call it, you're providing it with a float? as the first argument. Since floating-point operations with null values aren't valid, the compiler doesn't know what to do when this is the case.

There are three ways you can address this issue:

  1. Change InputCutOffFrequency so that it is of type float instead of type float?.
  2. Change how you call calcFc1 so that you send the value of InputCutOffFrequency instead of the nullable value:
fc1 = calcFc1(InputCutOffFrequency.Value, InputFS, InputTransitionBand); 
  1. Change the signature of calcFcl so that it accepts, for its first argument, a value of float? and then modify the function body so that it handles the case where the first argument is null.
public float calcFc1(float? f, float fs, float transition) { float _f = (f ?? 0) + (transition / 2); _f /= fs; return _f; } 

In this case, the f ?? 0 is coalescing f to a value. Essentially, if f is null, then 0 will be used. If f is not null, then the value in f will be used.