T086学习网 | 站长学院 | 技术文档 | 成语 | 歇后语 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论 | 欣欣百宝箱

C#速成(Quick C#)

【 http://www.fazhuan.com/作者:bigqiang翻译 更新时间:2004-07-27 | 字体:
[导读]原文出处:http://www.codeguru.com/cs_syntax/CSharp.html在一些术语上我尽量做到与MSDN的中文资料所述术语保持一致(转帖请保留译者相关信息)标题:C#速成(Quick C#)原作者:Aisha Ikram翻译:bigqiang网站:http:/...

-------------------
数据类型
-------------------
所有C#数据类型都派生自基类Object。这里有两类数据类型:

基本型/内置型  用户自定义型

下面一个C#内置类型列表:

类型  字节数  解释
byte  1  无符号字节型
sbyte  1  有符号字节型
short  2  有符号短字节型
ushort  2  无符号短字节型
int  4  有符号整型
uint  4  无符号整型
long  8  有符号长整型
ulong  8  无符号长整型
float  4  浮点数
double  8  双精度数
decimal 8  固定精度数
string    unicode字串型
char    unicode字符型
bool    真假布尔型

注意:C#当中的类型范围与C++有所不同;例如,C++的long型是4个字节,而在C#当中是8个字节。同样地,bool型和string型都不同于C++。bool型只接受true和false两种值。不接受任何整数类型。

用户定义类型包括:

类类型(class)
结构类型(struct)
接口类型(interface)

数据类型的内存分配形式的不同又把它们分成了两种类型:

值类型(Value Types)
引用类型(Reference Types)

值类型:
值类型数据在栈中分配。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enum type)

引用类型:
引用类型在堆中分配,当它们不再被使用时将被垃圾收集。它们使用new运算符来创建,对这些类型而言,不存在C++当中的delete操作符,根本不同于C++会显式使用delete这个运算符去释放创建的这个类型。C#中,通过垃圾收集器,这些类型会自动被收集处理。

引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型

枚举类型与C++当中的概念非常相似。它们都通过一个enum关键字来定义。

示例:

enum Weekdays
{
  Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday
}

类类型与结构类型的比较
除了在内存分配形式上外,类与结构的概念完全与C++相同。类的对象被分配在堆中,并且通过new来创建,结构也是被new创建但却被分配在栈当中。C#当中,结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。
(译者注:这与堆和栈内存分配结构的特点有关。简而言之,栈是一种顺序分配的内存;堆是不一定是连续的内存空间。具体内容需要大家参阅相关资料)

示例:

struct Date
{
    int day;
    int month;
    int year;
}

class Date
{
    int day;
    int month;
    int year;
    string weekday;
    string monthName;
    public int GetDay()
    {
        return day;
    }
    public int GetMonth()
    {
        return month;
    }
    public int GetYear()
    {
        return year;
    }
    public void SetDay(int Day)
    {
        day = Day ;
    }
    public void SetMonth(int Month)
    {
        month = Month;
    }
    public void SetYear(int Year)
    {
        year = Year;
    }
    public bool IsLeapYear()
    {
        return (year/4 == 0);
    }
    public void SetDate (int day, int month, int year)
    {
    }
    ...
}



-------------------
属性
-------------------
如果你熟悉C++面象对象的方式,你就一定有一个属性的概念。在上面示例当中,以C++的观点来看,Data类的属性就是day、month和year。用C#方式,你可以把它们写成Get和Set方法。C#提供了一个更方便、简单、直接的方式来访问属性。

因此上面的类可以被写成:

using System;
class Date
{
    public int Day{
        get {
            return day;
        }
        set {
            day = value;
        }
    }
    int day;

    public int Month{
        get {
            return month;
        }
        set {
            month = value;
        }
    }
    int month;

    public int Year{
        get {
            return year;
        }
        set {
            year = value;
        }
    }
    int year;

    public bool IsLeapYear(int year)
    {
        return year%4== 0 ? true: false;
    }
    public void SetDate (int day, int month, int year)
    {
        this.day   = day;
        this.month = month;
        this.year  = year;
    }
}

你可在这里得到并设置这些属性:

class User
{
   public static void Main()
   {
        Date date = new Date();
        date.Day = 27;
        date.Month = 6;
        date.Year = 2003;
        Console.WriteLine("Date: {0}/{1}/{2}", date.Day,
                                               date.Month,
                                               date.Year);
    }
}


上一页 [1] 2 [3] [4] [5] [6] 下一页
  • 转载请注明来源:IT学习网 网址:http://www.t086.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
更多
留言建议ASP探针PHP探针站长Enjoy的Blog
© 2017 T086学习网 - T086.com(原itlearner.com)
RunTime:15.71ms QueryTime:7