none
一道题就可以测试你的C#真实水平,欢迎大家来做 RRS feed

  • 常规讨论

  • public enum Color
    {
     Red,
    Yello,
     Green
    }

     public class Font
    {
     String fontName;
    Int32 size;
     Color color; }

     public class Charactor
     {
    Char c;
    Font f;
    }

     Charactor charactor = new Charactor();
    Character对象的大小是多少?
    要求写出答数的计算方法,不要只写答案。
    你对这道题回答的越详细,说明你对.net平台理解的越深。
    yeminggeng
    2009年8月29日 8:53

全部回复

  • 呵呵,楼主问题方法好N啊!
    charactor大小=1个char大小+ 1个Font大小
    Font大小=fontName大小+1个int32大小+1个Color大小
    楼主你说是多大啊!

    2009年8月29日 9:52
  • C#语法内并无规定,不同版本的编译器可以自由决定在分配对象时所需的内存空间。
    不要假定每个人都在用32位的系统。


    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月29日 12:26
    版主
  • 你好,要想知道多大,查一些生成的IL就知道啦!
    jon.valett@gmail.com
    2009年8月29日 14:06
    版主
  • 引用类型的实例还有一些内部的字段:SyncBlockIndex和MethodTablePtr,还有一个用来产生Hash值的内部字段
    至于是否还有其他的附加信息,这个好象没有公开啊!
    周雪峰
    2009年8月29日 14:58
    版主
  • 我上次发过这个问题,不知道什么原因给我删了。

    这确实是个考验大家.net底层的一个很好的问题。

    不管大家C#学到了那个层次,都可以回答一下的一道题目。

    对这道题回答的越完整,说明你对.net底层了解的越深。

    回家的时候希望大家能精确到字节,并说明字节数是如何得出的。

     

    Color.cs

     

    public enum Color

        {

             Red,

             Yello,

             Green

    }

     

    Font.cs

     

    public class Font

       {

            String fontName= "宋体";

            Int32 size;

            Color color;

        }

    Character.cs

     

    public class Character

        {

            Char c;

            Font f;

    }

     

    Charactor charactor = new Charactor();

     

    10个对象character的大小。


    yeminggeng
    2009年9月4日 8:58
  • 您好,其实很多人都回答您了。
    对于托管的对象大小不能仅仅通过计算成员来得出。
    32位机和64位机也不同。
    每个对象实例还包含了type object pointer和sync block index两个成员。您知道他们的大小吗?
    不知道您的标准答案里是否有计算这两个成员?也不知道能通过什么工具来验证答案?
    据我所知,还没有公布能检测托管堆对象大小的工具。
    2009年9月4日 10:47
  • 你好!
         .NET平台下的内存管理主要是通过CLR来自动实现的,很多东西没有公开,比如:
         每个引用类型的对象有两个隐藏的程序:MethodTable Ptr和Sync Block Index
         此外,还有一个内部字段(int类型),用于产生Hash值
    周雪峰
    2009年9月4日 14:24
    版主