using static System.Console;
using System.Collections.Generic;
using System;
public class Program {
public static void Main() {
WriteLine(typeof(Nullable).Name);
WriteLine(typeof(Nullable<>).Name);
int? nInt = 0;
decimal? nDecimal = 0M;
List<int> lInt = new List<int>();
int xInt = 1;
string xString = "";
decimal xDecimal = 2M;
Dictionary<string, int> dStingInt = new Dictionary<string, int>();
PrintObject<int?>(nInt);
PrintObject<decimal?>(nDecimal);
PrintObject<List<int>>(lInt);
PrintObject<int>(xInt);
PrintObject<string>(xString);
PrintObject<decimal>(xDecimal);
PrintObject<Dictionary<string, int>>(dStingInt);
}
private static void PrintObject<T>(T obj) {
var type = typeof(T);
var generic = type.IsGenericType;
var nullable = generic && type.GetGenericTypeDefinition() == typeof(Nullable<>);
WriteLine($"{type.Name} - {type.IsGenericType} - {(generic ? type.GetGenericTypeDefinition().Name : (""))} - {(nullable ? Nullable.GetUnderlyingType(type).Name : (""))} - {type.Name}\n");
}
}
//https://pt.stackoverflow.com/q/185142/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCnVzaW5nIFN5c3RlbTsKCnB1YmxpYyBjbGFzcyBQcm9ncmFtIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkgewoJCVdyaXRlTGluZSh0eXBlb2YoTnVsbGFibGUpLk5hbWUpOwoJCVdyaXRlTGluZSh0eXBlb2YoTnVsbGFibGU8PikuTmFtZSk7CgkJaW50PyBuSW50ID0gMDsKCQlkZWNpbWFsPyBuRGVjaW1hbCA9IDBNOwoJCUxpc3Q8aW50PiBsSW50ID0gbmV3IExpc3Q8aW50PigpOwoJCWludCB4SW50ID0gMTsKCQlzdHJpbmcgeFN0cmluZyA9ICIiOwoJCWRlY2ltYWwgeERlY2ltYWwgPSAyTTsKCQlEaWN0aW9uYXJ5PHN0cmluZywgaW50PiBkU3RpbmdJbnQgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIGludD4oKTsKCQlQcmludE9iamVjdDxpbnQ/PihuSW50KTsKCQlQcmludE9iamVjdDxkZWNpbWFsPz4obkRlY2ltYWwpOwoJCVByaW50T2JqZWN0PExpc3Q8aW50Pj4obEludCk7CgkJUHJpbnRPYmplY3Q8aW50Pih4SW50KTsKCQlQcmludE9iamVjdDxzdHJpbmc+KHhTdHJpbmcpOwoJCVByaW50T2JqZWN0PGRlY2ltYWw+KHhEZWNpbWFsKTsKCQlQcmludE9iamVjdDxEaWN0aW9uYXJ5PHN0cmluZywgaW50Pj4oZFN0aW5nSW50KTsKCX0KCXByaXZhdGUgc3RhdGljIHZvaWQgUHJpbnRPYmplY3Q8VD4oVCBvYmopIHsKCQl2YXIgdHlwZSA9IHR5cGVvZihUKTsgCgkJdmFyIGdlbmVyaWMgPSB0eXBlLklzR2VuZXJpY1R5cGU7CgkJdmFyIG51bGxhYmxlID0gZ2VuZXJpYyAmJiB0eXBlLkdldEdlbmVyaWNUeXBlRGVmaW5pdGlvbigpID09IHR5cGVvZihOdWxsYWJsZTw+KTsKCQlXcml0ZUxpbmUoJCJ7dHlwZS5OYW1lfSAtIHt0eXBlLklzR2VuZXJpY1R5cGV9IC0geyhnZW5lcmljID8gdHlwZS5HZXRHZW5lcmljVHlwZURlZmluaXRpb24oKS5OYW1lIDogKCIiKSl9IC0geyhudWxsYWJsZSA/IE51bGxhYmxlLkdldFVuZGVybHlpbmdUeXBlKHR5cGUpLk5hbWUgOiAoIiIpKX0gLSB7dHlwZS5OYW1lfVxuIik7Cgl9Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzE4NTE0Mi8xMDE=