浅谈Microsoft C#编译器和Mono C#编译器

我在2009年4月19日写的一篇随笔“Timus 1037. Memory management”中,使用了如下的一个结构(Structs)来表示“内存块”:

struct Block
{
 public int Id { get; private set; }
 public int Time { get; set; }
 public Block(int id, int time) : this() { Id = id; Time = time; }
}

在这个结构中,Id 表示“内存块”的编号,Time 表示该“内存块”到期时间,它们都是自动实现的属性(Auto-Implemented Properties)。

下面,就是我们这次的主角 Block.cs 源程序文件:

using System;

namespace Skyiv.Ben.Test
{
 struct Block
 {
  public int Id { get; private set; }
  public int Time { get; set; }
  public Block(int id) : this() { Id = id; }
 }
 
 sealed class Test
 {
  static void Main()
  {
   Console.WriteLine(new Block(37).Time);
  }
 }
}

我们将分别在 Windows 和 Linux 操作系统下编译这个 C# 源文件。

Windows 操作系统的版本如下所示:

时间: 2025-01-01 16:26:21

浅谈Microsoft C#编译器和Mono C#编译器的相关文章

浅谈.NET编译时注入(C#-->IL)

原文:浅谈.NET编译时注入(C#-->IL)      .NET是一门多语言平台,这是我们所众所周知的,其实现原理在于因为了MSIL(微软中间语言)的一种代码指令平台.所以.NET语言的编译就分为了两部分,从语言到MSIL的编译(我喜欢称为预编译),和运行时的从MSIL到本地指令,即时编译(JIT).JIT编译分为经济编译器和普通编译器,在这里就不多说了,不是本文的重点.本文主要讨论下预编译过程中我们能做的改变编译情况,改变生成的IL,从编译前后看看微软C#3.0一些语法糖,PostSharp

浅谈C++内存分配及变长数组的动态分配_C 语言

第一部分 C++内存分配 一.关于内存 1.内存分配方式 内存分配方式有三种: (1)从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在 例如全局变量,static变量. (2)在栈上创建.在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存 储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限. (3) 从堆上分配,亦称动态内存分配.程序在运行的时候用malloc或new申请任意多少的内存,程序员

浅谈关于JavaScript API设计的一些建议和准则

  这篇文章主要介绍了浅谈关于JavaScript API设计的一些建议和准则,文中列举了许多知名的JS API进行辅助说明,极力推荐!需要的朋友可以参考下 设计是一个很普遍的概念,一般是可以理解为为即将做的某件事先形成一个计划或框架. (牛津英语词典)中,设计是一种将艺术,体系,硬件或者更多的东西编织到一块的主线.软件设计,特别是作为软件设计的次类的API设计,也是一样的.但是API设计常常很少关注软件发展,因为为其他程序员写代码的重要性要次于应用UI设计和最终用户体验. 但是API设计,作为

web组件的通信---浅谈事件

web web组件的通信---浅谈事件大家目前开发asp.net程序经常会用到usercontrols即pagelet(.ascx文件).有不少人现在把它当做asp里的include来使用.当然这也是很自然的,但一旦考虑到user controls和他所处的容器web form之间或其他user controls之间的通信,事情好像就比较复杂了.比如说,我有这样一个页面                    User Control(Image Button)User Control(Left

浅谈Excel开发(九) Excel开发中遇到的常见问题及解决方法

相关文章: 浅谈Excel开发(1) Excel开发概述 浅谈Excel开发(二) Excel 菜单系统 浅谈Excel开发(三) Excel 对象模型 Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家有所帮助. 一 插件调试不了以及错误导致崩溃的问题 在开发机器上,有时可能会装有多个版本的.NET运行时,有时候也可能装有多个版本的Visual Studio,本人的开发机器上就安装了3个版本的Visual Studi

浅谈Excel开发(五) Excel的RTD函数

相关文章: 浅谈Excel开发(1) Excel开发概述 浅谈Excel开发(二) Excel 菜单系统 浅谈Excel开发(三) Excel 对象模型 上文介绍了Excel中的UDF函数,本文介绍一下同样重要的RTD函数.从Excel 2002开始,Excel引入了 一种新的查看和更新实时数据的机制,即real-time data简称RTD函数,他是一种Push-Pull的方式,及在 需要更新数据的时候,RTD给Excel Push一个消息说要更新数据,Excel在收到消息后主动拉取Pull新

浅谈游戏官网现状及设计趋势

  为什么游戏官网的构建好像这年从来没变过 ?这是功能使然还是思维惯性?什么才是真正是对的?设计师的工作就是在此框架下在样式上做文章?思考点其实很多, 答案其实也是随环境在一直变化着的.今天的答案,也会成为你明天的束缚.但我认为最重要的还是结论得来的思考过程,能有样的一个沟通机制,一个平台来和业内设计师一起交流思考的过程.按部就班,惯性思维的做设计,可能会让你的思路越做越窄. 就如ideas这期主题--"游戏官网"一样,设计师emily和jason会和大家分享下,他们对于游戏官网现状,

浅谈缓冲区溢出之栈溢出<上>

有段时间没有用windows了,刚一开机又是系统补丁更新.匆匆瞥了一眼看到了"内核缓冲区溢出漏洞补丁"几个字眼.靠,又是内核补丁.打完这个补丁后MD的内核符号文件又得更新了.于是抱怨了几句,一旁的兄弟问什么是缓冲区溢出.这个-三两句话还真说不清楚.解释这个问题用C语言比较方便,但是单从C代码是看不出来什么的,具体原理要分析机器级代码才能说清楚.既然是浅谈原理,那就从最基本的开始吧. 本文的定位是对此方面一无所知的读者,所以大牛们可以直接飘过- 缓冲区溢出这个名词想必大家并不陌生吧,在微

浅谈数据库连接

原文:浅谈数据库连接 必须澄清,虽然文章是我总结整理的,但是很多知识的确不是我能研究分析得出来,通过听培训.看书.实践所总结得出,一方面为了给自己备用,以便以后出现问题能解决,另一方面也希望遇到相同问题的朋友能从中得到一些启示.所以文章里面的知识可能会在很多地方都出现. 我们经常会遇到很多连接问题,同时程序员往往也认为连接数据库只需要简单地连接→openconnection→操作→close,但是一个简单的连接动作,背后往往带有很多东西,充分理解,会对开发及管理有很大的帮助,毕竟连不上服务器其他