初探c#-4

作者: 依栏望海[17731168] 2000-10-25 23:52:26 修改 删除 [回复]

1。4 预定义类型(Predefined types)

c#提供了一系列预定义类型。它们与c/c++有不少相似的地方。预定义引用类型有objectstringobject类型是所有其他类型的基础。

预定义类型包括符号数、无符号数、浮点、布尔、字符和十进制数。

  • 符号数有:sbyteshortintlong
  • 无符号数有:byteushortuintulong
  • 浮点数有:floatdouble
  • 布尔类型就像一个开关,只有两种状态:truefalse

c#对布尔的要求比c/c++严格,与java类似。

在c#中false不等于0,true也不等于1;false和true都是单独分离出来的一个值。学过c/c++的网友都知道

int i = 0; 
if (i = 0) { // Bug: 应该是 (i == 0) 
.... 
} 
/* 是没有问题的。但在c#中会引发一个编译错误(error CS0029: Cannot implicitly convert type 'int' to 'bool')。
当然,这样牺牲了一点没有必要的灵活性。我们再也不能这样:*/ 

string str; 
.... 
if(str = Console.ReadLine()) { 
  Console.WriteLine("Your comments are: {0}",str); 
.... 
/* 而必须:*/ 
using System; 
class BoolTest 
{ 
  static void Main() { 
    string str = Console.ReadLine();//也可以:string str; 
    if(str == "")                   //        if((str = Console.ReadLine()) == "") 
      Console.WriteLine("i can't read your comments. Please tell me something! O.K.?"); 
    else 
      Console.WriteLine("Your comments are: {0}",str); 
  } 
} 

我抄了一张预定义类型的简表供大家参考。

TypeDescriptionExamples
objectThe ultimate base type of all other typesobject o = new Stack();
stringString type; a string is a sequence of Unicode charactersstring s = "Hello";
sbyte8-bit signed integral typesbyte val = 12;
short16-bit signed integral typeshort val = 12;
int32-bit signed integral typeint val = 12;
long64-bit signed integral typelong val1 = 12;long val2 = 34L;
byte8-bit unsigned integral typebyte val1 = 12;byte val2 = 34U;
ushort16-bit unsigned integral typeushort val1 = 12;ushort val2 = 34U;
uint32-bit unsigned integral typeuint val1 = 12; uint val2 = 34U;
ulong64-bit unsigned integral typeulong val1 = 12;ulong val2 = 34U;
ulong val3 = 56L;ulong val4 = 78UL;
floatSingle-precision floating point typefloat value = 1.23F;
doubleDouble-precision floating point typedouble val1 = 1.23;double val2 = 4.56D;
boolBoolean type; a bool value is either true or falsebool value = true;
charCharacter type; a char value is a Unicode characterchar value = 'h';
decimalPrecise decimal type with 28 significant digitsdecimal value = 1.23M;

你也可以自定义自己的预定义类型,可以这样:

using System;
struct Digit
{...}
class Test
{
    static void TestInt()
    {
        int a = 1;
        int b = 2;
        int c = a + b;
        Console.WriteLine(c);
    }
    static void TestDigit()
    {
        Digit a = (Digit)1;
        Digit b = (Digit)2;
        Digit c = a + b;
        Console.WriteLine(c);
    }
    static void Main()
    {
        TestInt();
        TestDigit();
    }
}

这一节有点沉闷。:(


作者: Burn[5151599] 2000-10-26 09:55:02 [回复]

呵呵,我又是第一个了,呵呵,那个王先生呢! 兄弟再来,我喜欢看。

我是个盖世英雄,有一天我会驾着七彩降云杀入敌营去救我的情人,我猜对了前头 也猜对了这结果。(Zzzz....)

作者: 王志清[21847847] 2000-10-27 21:26:28 [回复]

兄弟今天来的是晚了一点,真是抱歉之极! 只好坐后面一点,认真听课了……

Contributors: FHL