title: How to specify equivalant of null as default parameter of struct type
body: <p>How can I define a function so that a struct parameter can be optionally passed, yet be able to know inside the function whether it was passed or not? What I am trying to accomplish would be similar to:</p>
  
  <pre><code>function SomeFunction(string str = null)
  {
      if (str == null) { ... }
  }
  </code></pre>
  
  <p>Calling the above function with no parameter would trigger the <code>if (str == null)...</code> condition:</p>
  
  <pre><code>SomeFunction();
  </code></pre>
  
  <p>The above approach doesn't work with a parameter of type struct. Given the following struct:</p>
  
  <pre><code>public struct MyStruct
  {
      public int SomeInt;
      public double SomeDouble;
  }
  </code></pre>
  
  <p>This generates an error that there are no standard conversions:</p>
  
  <pre><code>public function SomeFunction(MyStruct mystruct = null) { }
  </code></pre>
  
  <p>But when I define the function as:</p>
  
  <pre><code>public function SomeFunction(MyStruct mystruct = default(MyStruct)) { }
  </code></pre>
  
  <p>And call the function with:</p>
  
  <pre><code>SomeFunction();
  </code></pre>
  
  <p>On entry to the function <code>mystruct</code> contains 0 for <code>SomeInt</code> and 0.00 for <code>SomeDouble</code>. These could be legit values which leaves me without a way to know if the parameter was actually passed to the function or left empty.</p>
  
  <p>How can I define this parameter so that if it is not specified in the call I can detect that within the function?</p>