c#学习读书笔记《1》

原创 2006年05月22日 00:24:00

1.设置环境变量: path =C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727

2.helloworld.cs 第一个程序

namespace InsideCSharp
{
    class HelloWorldConsoleApp
    {
        static void Main()
        {
            System.Console.WriteLine("hello,world");
        }
    }
}

cmd-->  csc helloworld.cs   -->helloworld.exe

namespace 可以嵌套

被引用时用  using A;   但是当引用多个名称空间时,类不能有歧义。可以完全限定。

3。了解底层代码MSIL

用dumpbin.exe实用程序查看(^^据说业界都用这个看二进制代码的内部)(在C:/Program Files/Microsoft Visual Studio 8/VC/bin下)

CMD-->dumpbin  /HEADERS /CLRHEADER helloworld.exe

//*******************************ji

 E:/study/2006/c#>dumpbin /headers /clrheader helloworld.exe
Microsoft (R) COFF Binary File Dumper Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

DUMPBIN : warning LNK4044: unrecognized option "clrheader"; ignored

Dump of file helloworld.exe

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
             14C machine (i386)
               3 number of sections
        44708882 time date stamp Sun May 21 23:34:26 2006
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
             10E characteristics
                   Executable
                   Line numbers stripped
                   Symbols stripped
                   32 bit word machine

OPTIONAL HEADER VALUES
             10B magic #    //表明确实是一个合法的PE
            8.00 linker version
             400 size of code
             600 size of initialized data
               0 size of uninitialized data
            234E RVA of entry point
            2000 base of code
            4000 base of data
          400000 image base
            2000 section alignment
             200 file alignment
            4.00 operating system version
            0.00 image version
            4.00 subsystem version
               0 Win32 version
            8000 size of image
             200 size of headers
               0 checksum
               3 subsystem (Windows CUI)
             400 DLL characteristics
                   RESERVED - UNKNOWN
          100000 size of stack reserve
            1000 size of stack commit
          100000 size of heap reserve
            1000 size of heap commit
               0 loader flags
              10 number of directories
               0 [       0] RVA [size] of Export Directory
            2300 [      4B] RVA [size] of Import Directory
            4000 [     2B0] RVA [size] of Resource Directory
               0 [       0] RVA [size] of Exception Directory
               0 [       0] RVA [size] of Certificates Directory
            6000 [       C] RVA [size] of Base Relocation Directory
               0 [       0] RVA [size] of Debug Directory
               0 [       0] RVA [size] of Architecture Directory
               0 [       0] RVA [size] of Special Directory
               0 [       0] RVA [size] of Thread Storage Directory
               0 [       0] RVA [size] of Load Configuration Directory
               0 [       0] RVA [size] of Bound Import Directory
            2000 [       8] RVA [size] of Import Address Table Directory
               0 [       0] RVA [size] of Delay Import Directory
            2008 [      48] RVA [size] of Reserved Directory
               0 [       0] RVA [size] of Reserved Directory


SECTION HEADER #1
   .text name
     354 virtual size
    2000 virtual address
     400 size of raw data
     200 file pointer to raw data
       0 file pointer to relocation table
       0 file pointer to line numbers
       0 number of relocations
       0 number of line numbers
60000020 flags
         Code
         Execute Read

SECTION HEADER #2
   .rsrc name
     2B0 virtual size
    4000 virtual address
     400 size of raw data
     600 file pointer to raw data
       0 file pointer to relocation table
       0 file pointer to line numbers
       0 number of relocations
       0 number of line numbers
40000040 flags
         Initialized Data
         Read Only

SECTION HEADER #3
  .reloc name
       C virtual size
    6000 virtual address
     200 size of raw data
     A00 file pointer to raw data
       0 file pointer to relocation table
       0 file pointer to line numbers
       0 number of relocations
       0 number of line numbers
42000040 flags
         Initialized Data
         Discardable
         Read Only

  Summary

        2000 .reloc
        2000 .rsrc
        2000 .text
//********************************

为了研究c#和.net元素如何实现,用Framework SDK中的反汇编工具,ILDASM.

(ildasm.exe: C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin)

其他还有配件(assembly),模块,构建配件,创建共享配件,使用全局配件缓存等内容,在此不再祥述^^

c#学习心得读书笔记

  • 2015年09月29日 10:23
  • 16KB
  • 下载

Effective c# 第二版读书笔记1

Effective C#第二版 个人读书笔记 使用属性而不是可访问的数据成员

关于C#语言的学习(读书笔记)

  • 2011年04月06日 14:21
  • 400KB
  • 下载

《Unity3d脚本编程 使用C#语言开发跨平台游戏》读书笔记1

1.4脚本编程的优势 ·易于学习,代码维护方便,适合快速开发 ·开发成本低(因易于学习,所以可以启用新人,同时开发速度快,这些都是降低成本的方法) 2.2.1以速度作为衡量语言级...
  • AKA009
  • AKA009
  • 2017年04月24日 12:58
  • 1661

CLR via C# 读书笔记1-5

本地代码生成器: NGen.exe NGen.exe 能把 IL 代码变异为本地代码,这使得在运行时 CLR 的 JIT 编译器不需要在运行时编译 IL 代码从而提高运行效率。NGen.exe 适用...
  • sqlchen
  • sqlchen
  • 2013年05月10日 13:36
  • 514

《编写高质量代码 : 改善C#程序的157个建议》读书笔记 1-10

《编写高质量代码 : 改善C#程序的157个建议》读书笔记

CLR via C# 读书笔记1-4 追记

IL 的验证 IL 提升了程序的强壮性和安全性,当IL 转换成本地 CPU 指令时, CLR 会进行一个验证的处理。这个验证处理保证了 IL 代码所干的事情是安全的。比如:每个被调用方法的参数是匹配...
  • sqlchen
  • sqlchen
  • 2013年05月10日 11:25
  • 568

CLR Via C# 第五章(基元类型,引用类型与值类型)(1)——读书笔记

基元类型,引用类型与值类型1.基元类型基元类型:编译器直接支持的概念称作基元类型 简单来说,就是int,char,bool这些基本类型,基元类型会直接映射到Framework类库(FCL)中的类型,...

【读书笔记】《深入理解c#》(1)

写在前面: 大学的c#选修课没有讲语法课,直接asp.net 之类的,我觉得不太好。所以我最近在看这本书,深入学习。 在博文我会放一些书中的代码和对于我来说没见过或者很生疏的东西。 就当是批注之...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#学习读书笔记《1》
举报原因:
原因补充:

(最多只允许输入30个字)