fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Runtime.InteropServices;
  4.  
  5. public class Test
  6. {
  7. public struct BigGuid32
  8. {
  9. public KeyValuePair<Guid, Guid> KV;
  10. }
  11.  
  12. public struct BigGuid64
  13. {
  14. public KeyValuePair<BigGuid32, BigGuid32> KV;
  15. }
  16.  
  17. public struct BigGuid128
  18. {
  19. public KeyValuePair<BigGuid64, BigGuid64> KV;
  20. }
  21.  
  22. public struct BigGuid256
  23. {
  24. public KeyValuePair<BigGuid128, BigGuid128> KV;
  25. }
  26.  
  27. public struct BigGuid512
  28. {
  29. public KeyValuePair<BigGuid256, BigGuid256> KV;
  30. }
  31.  
  32. public struct BigGuid1k
  33. {
  34. public KeyValuePair<BigGuid512, BigGuid512> KV;
  35. }
  36.  
  37. public struct BigGuid2k
  38. {
  39. public KeyValuePair<BigGuid1k, BigGuid1k> KV;
  40. }
  41.  
  42. public struct BigGuid4k
  43. {
  44. public KeyValuePair<BigGuid2k, BigGuid2k> KV;
  45. }
  46.  
  47. public struct BigGuid8k
  48. {
  49. public KeyValuePair<BigGuid4k, BigGuid4k> KV;
  50. }
  51.  
  52. public struct BigGuid16k
  53. {
  54. public KeyValuePair<BigGuid8k, BigGuid8k> KV;
  55. }
  56.  
  57. public struct BigGuid32k
  58. {
  59. public KeyValuePair<BigGuid16k, BigGuid16k> KV;
  60. }
  61.  
  62. public struct BigGuid64k
  63. {
  64. public KeyValuePair<BigGuid32k, BigGuid32k> KV;
  65. }
  66.  
  67. public struct BigGuid128k
  68. {
  69. public KeyValuePair<BigGuid64k, BigGuid64k> KV;
  70. }
  71.  
  72. public class BigLOH
  73. {
  74. public BigGuid128k KV;
  75. }
  76.  
  77. public static void Main()
  78. {
  79. // This is a value type. It won't be handled as a LOH
  80. var big = new BigGuid128k();
  81. Console.WriteLine(Marshal.SizeOf(big));
  82.  
  83. // But this is a reference type :-)
  84. var bigLOH = new BigLOH();
  85. }
  86. }
Success #stdin #stdout 0.03s 24456KB
stdin
Standard input is empty
stdout
131072