搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 573|回复: 1
收起左侧

[普通教程] 【MSDNのC#系列教程】<语言规范>1.2.1 预定义类型

[复制链接]

签到天数: 2 天

连续签到: 2 天

[LV.1]初来乍到

48

主题

24

好友

1万

积分

第一章

积分
11403
发表于 2012-7-20 19:58:06 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
本帖最后由 羞怯的渣白君 于 2012-7-20 20:10 编辑

此为MSDN的资料源地址:http://msdn.microsoft.com/zh-cn/library/ms123401


   C# 提供了一组预定义的类型,这些类型中的大多数是 C 和 C++ 开发人员所熟悉的。

   预定义的类型中,属于引用类型的有 objectstring 两类。object 类型是所有其他类型的最终基类型。string 类型用于表示 Unicode 字符串值。string 类型的值是不可变的

   预定义的值类型包括有符号整型无符号整型浮点型以及 boolchardecimal 等类型。属有符号整型的有 sbyteshortintlong;属无符号整型的有 byteushortuint ulong;属浮点型的有 floatdouble

   bool 类型用于表示布尔值,即仅有真、假两个值。设置 bool 类型可使编写的代码较易于实现自我文档化,并且有助于消除很常见的 C++ 编码错误,即开发人员在本应使用“==”的地方错误地使用了“=”。以下列代码为例:

int i = ...;
F(i);
if (i = 0)   // Bug: the test should be (i == 0)
   G();

   如果在 C# 中编译这段代码,则会导致编译错误。这是因为表达式 i = 0 是 int 类型,而 if 语句要求 bool 类型的表达式。
char 类型用于表示 Unicode 字符。char 类型的变量表示单个 16 位 Unicode 字符。

   decimal 类型适合于那些无法接受由浮点表示形式导致的舍入错误的计算。常见的示例包括税务计算和货币转换这样的金融计算。decimal 类型提供 28 位有效数字。

下表列出了预定义类型,并说明如何为每种类型编写文本值。


类型说明示例



object



所有其他类型的最终基类型


object o = null;






string



字符串类型;字符串是 Unicode 字符序列


string s = "hello";






sbyte



8 位有符号整型


sbyte val = 12;






short



16 位有符号整型


short val = 12;






int



32 位有符号整型


int val = 12;






long



64 位有符号整型


long val1 = 12;long val2 = 34L;






byte



8 位无符号整型


byte val1 = 12;






ushort



16 位无符号整型


ushort val1 = 12;






uint



32 位无符号整型


uint val1 = 12;uint val2 = 34U;






ulong



64 位无符号整型


ulong val1 = 12;ulong val2 = 34U;ulong val3 = 56L;ulong val4 = 78UL;






float



单精度浮点型


float val = 1.23F;






double



双精度浮点型


double val1 = 1.23;double val2 = 4.56D;






bool



布尔型;bool 值或为真或为假


bool val1 = true;bool val2 = false;






char



字符类型;char 值是一个 Unicode 字符


char val = 'h';






decimal



精确的小数类型,具有 28 个有效数字


decimal val = 1.23M;




    每个预定义类型都是一个在 System 命名空间内定义的类型的简写形式。例如,关键字 int 所指的实际上是结构类型 System.Int32。就编写源代码的样式而言,使用关键字比使用完整的系统类型名称要好。


    预定义的值类型(如 int)在少数情况下会进行特殊处理,而大部分情况下完全像其他结构一样处理。运算符重载使开发人员能够定义行为与预定义的值类型基本相同的新结构类型。例如,Digit 结构可支持与预定义整型相同的数学运算,并可定义 Digit 与预定义类型之间的转换。

  预定义类型本身使用运算符重载。例如,比较运算符 == 和 != 对于不同的预定义类型有不同的语义:
  • 如果两个 int 类型的表达式表示相同的整数值,则两个表达式被视为相等。
  • 如果两个 object 类型的表达式都引用同一对象或者都为 null,则两个表达式被视为相等。
  • 如果两个 string 类型的表达式的字符串实例的长度相同并且每个字符位置中的字符也相同,或者都为 null,则两个表达式被视为相等。

示例

using System;
class Test
{
   static void Main() {
      string s = "Test";
      string t = string.Copy(s);
      Console.WriteLine(s == t);
      Console.WriteLine((object)s == (object)t);
   }
}



产生输出

True
False


这是因为第一个比较的是两个 string 类型的表达式,而第二个比较的是两个 object 类型的表达式





评分

参与人数 1宅魂 +1 宅币 +3 收起 理由
没糖给你了 + 1 + 3 o(* ̄▽ ̄*)ブ 发糖

查看全部评分

願爾有生之日。   得見吾君臨天下
回复

使用道具 举报

该用户从未签到

2

主题

13

好友

743

积分

New Game

积分
743
发表于 2012-9-29 16:52:43 | 显示全部楼层
好复杂的样子·
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-5-2 08:21 , Processed in 0.086800 second(s), 22 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表