`

偶的第一篇译文(上):Data Types in C#

阅读更多

        [前言]:昨天在看小新0574的一篇post的时候,发现自己对于数据类型的了解还是很肤浅的,于是搜索了一下,找到了这篇来自DotNetJunkies文章。个人觉得文章写得很不错,条理清晰而且有一定深度,故将其翻译,以搏诸位一哂了。
原文:Data Type in C#
作者:Wajahat Abbas 
                                                                      C# 的数据类型
        在这篇文章中,让我们来了解一下C#的主要内容——C#的数据类型,同时,我们也将了解C#中定义的值类型和引用类型。为了能够理解得更加透彻,我们在学习的过程中,将相应编写一些范例程序。通过这些程序,你会轻松地理解这些内容。
        拥有不同编程语言背景的程序员一定已经体验过数据类型的强大功能了,而VB 6.0的程序员更是如此。因为VB6.0提供了非常丰富的数据类型:从布尔型到固有的字符串类型,再到日期/时间类型;另一方面,像C、C++语言则会要求程序员自己将原生类型糅合在一起去构建特有的数据类型。原生类型组合起来就得到了类、结构体或者复杂的类库,如MFC。

CTS (Common Type System)
       在C#出现之后,C程序员也有了自己的快速应用开发环境(RAD)。这可能是通过CTS(Common Type System,通用类型体系)去实现的。C#跟其他语言一样支持CTS。
        Micorsoft所描述的CTS的核心功能列示如下:

  • 建立一个支持跨语言集成、类型安全并且拥有高效的代码执行效率的框架;                
  • 提供一个面向对象模型模型。该模型可以支持很多语言的完整实现;                
  • 定义一系列的语言必须遵循的规则,以保证由不同语言实现的对象之间可以进行交互。
        正如你刚看到的,在CTS提供的核心功能中,最重要的功能是保证了跨语言的集成。通过这个功能,程序员可以利用.NET Framework支持的任何一种语言去创建对象,并且在任何一种语言中使用这些对象。而这个功能的实现正是由于定义了数据类型集合的CTS。

CTS 概览
        CTS可以分为两个主要类型。而两个主要类型还可以继续细分为更多的子类型。

值类型
        值类型在堆栈(stack)存储数据。堆栈是一个存储像int、float等等这些固定长度数据的地方。每一个程序都各自拥有自己的堆栈,而其他程序是不能共享的。你可以认为堆栈是在函数调用的时候获得的内存块,所有调用函数的局部变量会被压入程序堆栈中,随后被依次取出。我记得一次在VB中创建COM的经历:那时我用了太多的递归函数,结果得到了一个"Out of Stack Space"的错误。这个错误是由堆栈溢出导致,因为在递归函数中,会有很多变量进入堆栈,从而导致堆栈溢出。因此,在递归函数中使用变量一定要小心谨慎。
        如果我们将一个变量赋值给另外一个变量,在堆栈中则会创建两个不同的复本,尽管它们的数据是一样的,因此,在堆栈中分配了两块空间。值类型正如它名字所暗示的,在赋值过程中是将一个变量的值复制到另外一个变量,如果在程序中一个变量被修改了,而另一个变量并不会相应的改变。这就是值类型的主体:变量之间赋值只是复制值,而一个变量的改变对另一个变量不会有任何影响。

引用类型
        引用类型在堆(heap)中存储数据。堆是另外一个我们能够在.NET Framework中存储数据的地方。引用类型存储类型(对象)的引用,而不是值本身。所以一个对象被修改了将影响到这个对象的其他引用。引用类型的类型可以由自描述类型、指针或者接口类型的值来决定。其中,自描述类型可以进一步分为:数组和类类型。

本篇原文:

In this article we will learn about one of the main topics in C# -- Data Types in C#. We will also learn about the value and reference types defined in C#. To understand properly we will learn with creating some samples program by which you can understand it easily.

Programmers from different language backgrounds have experienced the power of Data Types, especially VB 6.0 developers had a very broad range of data types range from Boolean, intrinsic String type to date/time types, on the other hand languages like C, C++ forced the programmers to construct their own data types by gluing primitives together into classes or structs, or complex propriety libraries such as MFC.

CTS (Common Type System)

After C#, C programmers too have their own Rapid Application Development environment. This is possible by CTS (Common Type System), C# supports the CTS like other languages.

The core functions of CTS as described by the Microsoft are as following:

  • Establishes a Framework that enables cross-language integrations, type safety, and high performance code execution.
  • Provides an Object Oriented Model that supports the complete implementation of many programming languages.
  • Define set of rules that languages must follow, which helps ensures that object written in different languages can interact with each other.

As you have read the core functionalities provided by CTS, the most important function is that it ensures cross-language integration by which programmers can create objects in any language which is supported by .Net Framework and can use these objects in any .Net languages; it is due to CTS which defines a set of Data types.

CTS Overview

The CTS is classified into two main types, which may be further classified into more subtypes.

Value Type

Value types store the data on the stack, STACK is a place where data stores in fixed length such as int, float, etc. Every program has its own stack and no other program shares it, and it allocates on program execution. You can imagine Stack as a block acquired in memory and when the function of the program is called, all local variables to the calling function are pushed onto the program stack, to be latter popped off and retrieved. I remember one of my experiences in creating an COM in VB. I was using so many recursive functions and got the error "Out of Stack Space". This was due to Stack overflow, because in recursive functions there were so many variables which popped up onto the stack that the Stack overflowed so one must careful using Variables in recursive functions.

If we are assigning one value variable to the other variable, it creates two distinct copies of the same data on the stack. So now in the Stack there are two spaces allocated. The value type as it name implies copies the value to the other variable not the reference of the other value. In Value type if the first variable modifies in the program it doesn't modify the other variable value. This is the main theme of Value type that it copies the value and doesn't makes effect on the other variable if the first variable got changed.

Reference Type

Reference types stores the data on the heap. This is the second place where we can store the data in the .NET Framework. Reference type stores the reference of the type, not the value. So if the value of the first object modified it will also effect the other type. The type of reference type can be determined from values of self describing types, pointers, or interfaces types. Self describing types are further classified into array and class types.

分享到:
评论

相关推荐

    Nutch,第1部分:爬行(译文)

    ( Nutch,第1部分:爬行(译文) ( Nutch,第1部分:爬行(译文)

    悟真篇全卷译文.doc

    悟真篇全卷译文.doc的内容可以分为两个部分:第一部分是序言和自序,伯端在这里介绍了悟真篇的宗旨和目的,强调了人生的短暂和不确定性,指出只有通过修行和自省,才能达到悟真和成圣的目标。第二部分是正文,伯端在...

    Face Alignment by Explicit Shape Regression原文及译文

    《Face Alignment by Explicit Shape Regression》是一篇关于面部对齐技术的学术论文,它在计算机视觉领域具有重要价值。这篇论文的核心在于提出了一种名为“显式形状回归”的方法,用于解决人脸图像中的关键点定位...

    ICL7660_Datasheet汉语译文.doc

    ICL7660_Datasheet汉语译文.doc

    新版中日交流标准日本语(初级)上册:课文译文 (2).pdf

    新版中日交流标准日本语(初级)上册:课文译文 (2).pdf

    中庸全文及译文.pdf

    《中庸》全文及译文.pdf 《中庸》是一部中国古典哲学著作,作者是孔子弟子子思。该书主要探讨了中庸之道的内涵和实践方法。中庸之道被认为是儒家哲学的核心思想,强调人性和自然的和谐发展。 第一章 《中庸》第一...

    ApacheCN 大数据译文集.zip

    《ApacheCN 大数据译文集》是一份包含大量关于数据采集、处理和展示相关源码及工具的压缩包资源。这份资料集由ApacheCN社区精心整理,旨在为中文用户提供高质量的大数据技术学习材料。主要涵盖了大数据领域的核心...

    王力【古代汉语】第一册译文.doc

    王力【古代汉语】第一册译文.doc

    spring-data-commons-1.13.7.RELEASE.jar中文-英文对照文档.zip

    ·本文档为双语同时展示,一行原文、一行译文,可逐行对照,避免了原文/译文来回切换的麻烦; ·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、...

    毕业论文 外文原文及译文

    标签“毕业 论文 译文”表明这是一篇关于毕业论文内容的翻译,主要关注的是技术性的内容,即数据库引擎的选择,这对于计算机科学或信息技术专业的学生来说,可能是他们毕业设计或研究的一部分。 部分内容中,文章...

    罗织经原文及译文57257.doc

    在《罗织经》的第一篇中,作者讨论了人性的多样性和欺骗的本质。作者指出,人性的多样性是由于欺骗和伪装的结果,人们总是伪装自己的情感和意图。孔子也认为这种态度是可耻的。作者还强调,人的欲望多多,本性...

    最新人教版语文七年级上册:16《诫子书》同步练习二.docx

    1. 两篇文言文对比: - 甲文诸葛亮告诫儿子的中心内容是:强调内心的宁静和节俭对于个人修养的重要性,以及立志和勤奋学习对于成就学业的关键作用。 - 乙文周公告诫儿子伯禽的中心内容是:告诫儿子不要因地位高贵...

    智囊全集 原文和译文都完整!.rar

    《智囊全集》中的每一篇故事都是一次智慧的碰撞,通过这些故事,我们可以学习到诸如“以柔克刚”、“顺势而为”、“知己知彼”等经典战略思想。例如,"空城计"的故事,展示了诸葛亮如何利用心理战术,以空城迷惑敌人...

    books_[译]_ApacheCN_大数据译文集_apachecn-bigdata-zh.zip

    books_[译]_ApacheCN_大数据译文集_apachecn-bigdata-zh

    新东方英文天天背80篇(有译文)

    综上所述,“新东方英文天天背80篇(有译文)”这一材料不仅仅涉及具体的英语学习技巧,更重要的是它涵盖了音乐艺术的核心理念和技术细节。通过对这些内容的学习,不仅可以提高英语水平,还能加深对音乐艺术的理解和...

    一年级英语上册第一单元录音材料原文和译文教案人教版新起点(2021-2022学年).pdf

    【标题】:“一年级英语上册第一单元录音材料原文和译文教案人教版新起点(2021-2022学年).pdf” 在小学教育阶段,英语学习是至关重要的,尤其对于一年级的学生来说,这是他们接触英语的初始阶段。人教版新起点英语...

    spring-data-mongodb-3.1.8.jar中文-英文对照文档.zip

    ·本文档为双语同时展示,一行原文、一行译文,可逐行对照,避免了原文/译文来回切换的麻烦; ·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、...

    wxPython in Action译文中文.pdf

    如果你是wxPython初学者,你一定会想从第一部分开始。第一章至第三章帮助您夯实 wxPython相关概念的坚实基础。第六章则对构建合理大小程序的步骤进行了完整回顾。第五章介绍如何让代码更易于管理的方法,第四章提供...

    C#如何使用Bogus创建模拟数据示例代码

    译文:C#中使用Bogus创建模拟数据 译者: Lamond Lu 背景 在我每次写技术类博文的时候,经常做的一件事就是创建模拟数据。在每篇博文中,为了解释某些概念,我需要创建许多模拟数据。这是一个我在实际中遇到的问题...

Global site tag (gtag.js) - Google Analytics