Search notes:

System.ValueType (class)

System.ValueType is the base class for all value types (as opposed to reference types).
When a variable with a value type is assigned to another variable, the content of the variable is copied (not a reference). Thus, unlike with reference types, after the assignment, the two variables refer to two independent copies of the struct and can be separately modified without influencing the other variable.
This behaviour plays a certain role when storing value types in collections.
A specific kind of value type is System.Enum (which itself allows to be derived from).

C-Sharp: structs

It is not possible to create a type that explicitly inherits from System.ValueType.
However, for example in C#, a struct always implicitly derives from System.ValueType. This is demonstrated in the following example. (It also shows that structs need not be created with the new operator.
using System;

namespace struct_example {

   struct S {
      public int    num;
      public string txt;
   };


   class Prg {
      static void Main() {

         S s;   // <-- Note: new operator not needed
         s.num = 42;
         s.txt ="Hello World";

         Console.WriteLine(s.GetType().BaseType.FullName);
      // System.ValueType

      }
   }
}
Github repository .NET-API, path: /System/ValueType/struct.cs

See also

System.Nullable<T>

Index