title: Safest way to pass data between forms in c# winforms
body: <p>I'm trying to remember a lesson I was taught briefly in school about safely passing data between winforms. </p>
  
  <p>My instructor called it <em>pipelining</em>, though I'm not sure if this is the correct term or merely his own name for it. He stated that his method was safer than the easiest way of publicizing the data so that everything can access it. He said it was safer because his method prevented access of the data from external programs or unrelated forms and processes, and he hailed it as good programming practice.</p>
  
  <p>My foundation in programming was very weak at the time. I lacked a deeper understanding of what he told me, and was really just repeating his steps. Without any concepts to bond his teachings to, I easily forgot his method.</p>
  
  <p>Now, I am better at what I do and I want to establish in a simple Q&amp;A the <strong>safest, most secure way to share data between winforms</strong>. That is, a method that keeps the data safe and secure, and can go from Form A to Form B, or Forms B, C, D... etc as I designate it, but does <em>not</em> leak out in any way.</p>
  
  <p>To specify, I'm looking to share data between forms in the same application. Maybe some day I'll try to share data between processes, but right now I only care about the forms.</p>
  
  <p>To make a more specific example, I am trying to pass the simple strings of name <code>versionNumber</code> and <code>lastEditDate</code> from the <code>Main</code> form to an <code>About</code> form, the knowledge for this allowing me to have a bunch of static variables that I only have to change in one location of the code, that can be passed down to any form I desire. But I want a secure way to do this, just in case passing data between forms by defining globally is considered bad practice, or unsafe.</p>