https://zoheirsoftware.com/blog/types-data-in-csharp-training