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:/...


-------------------
修饰符
-------------------
你必须已经知道public、private、protected这些常在C++当中使用的修饰符。这里我会讨论一些C#引入的新的修饰符。

readonly(只读)
readonly修饰符仅在类的数据成员中使用。正如这名字所提示的,readonly 数据成员仅能只读,它们只能在构造函数或是直接初始化操作下赋值一次。readonly与const数据成员不同,const 要求你在声明中初始化,这是直接进行的。看下面的示例代码:

class MyClass
{
    const int constInt = 100;    //直接初始化
    readonly int myInt = 5;      //直接初始化
    readonly int myInt2;     //译者注:仅做声明,未做初始化
    
    public MyClass()
    {
        myInt2 = 8;              //间接的
    }
    public Func()
    {
        myInt = 7;               //非法操作(译者注:不得赋值两次)
        Console.WriteLine(myInt2.ToString());
    }
    
}

sealed(密封)
密封类不允许任何类继承,它没有派生类。因此,你可以对你不想被继承的类使用sealed关键字。

sealed class CanNotbeTheParent
{
    int a = 5;
}

unsafe(不安全)
你可使用unsafe修饰符来定义一个不安全的上下文。在不安全的上下文里,你能写些如C++指针这样的不安全的代码。看下面的示例代码:

public unsafe MyFunction( int * pInt, double* pDouble)
{
    int* pAnotherInt = new int;
    *pAnotherInt  = 10;
    pInt = pAnotherInt;
    ...
    *pDouble = 8.9;
}




-------------------
interface(接口)
-------------------

如果你有COM方面的概念,你会立亥明白我要谈论的内容。一个接口就是一个抽象的基类,这个基类仅仅包含功能描述,而这些功能的实现则由子类来完成。C#中你要用interface关键字来定义象接口这样的类。.NET就是基于这样的接口上的。C#中你不支持C++所允许的类多继承(译者注:即一个派生类可以从两个或两个以上的父类中派生)。但是多继承方式可以通过接口获得。也就是说你的一个子类可以从多个接口中派生实现。

using System;
interface myDrawing
{
    int originx
    {
        get;
        set;
    }
    int originy
    {
        get;
        set;
    }
    void Draw(object shape);
}

class Shape: myDrawing
{
    int OriX;
    int OriY;

    public int originx
    {
        get{
            return OriX;
        }
        set{
            OriX = value;
        }
    }
    public int originy
    {
        get{
            return OriY;
        }
        set{
            OriY = value;
        }
    }
    public void Draw(object shape)
    {
        ...    // do something
    }
    
    // class's own method
    public void MoveShape(int newX, int newY)
    {
    .....
    }
    
}




-------------------
Arrays(数组)
-------------------

C#中的数组比C++的表现更好。数组被分配在堆中,因此是引用类型。你不可能访问超出一个数组边界的元素。因此,C#会防止这样类型的bug。一些辅助方式可以循环依次访问数组元素的功能也被提供了,foreach就是这样的一个语句。与C++相比,C#在数组语法上的特点如下:

方括号被置于数据类型之后而不是在变量名之后。
创建数组元素要使用new操作符。
C#支持一维、多维以及交错数组(数组中的数组)。

示例:

    int[] array = new int[10];              // 整型一维数组
    for (int i = 0; i < array.Length; i++)
        array[i] = i;

    int[,] array2 = new int[5,10];          // 整型二维数组
    array2[1,2] = 5;

    int[,,] array3 = new int[5,10,5];       // 整型的三维数组
    array3[0,2,4] = 9;

    int[][] arrayOfarray = = new int[2];    // 整型交错数组(数组中的数组)
    arrayOfarray[0] = new int[4];
    arrayOfarray[0] = new int[] {1,2,15};




-------------------
索引器
-------------------

索引器被用于写一个访问集合元素的方法,集合使用"[]"这样的直接方式,类似于数组。你所要做的就是列出访问实例或元素的索引清单。类的属性带的是输入参数,而索引器带的是元素的索引表,除此而外,他们二者的语法相同。

示例:

注意:CollectionBase是一个制作集合的库类。List是一个protected型的CollectionBase成员,储存着集合清单列表。
class Shapes: CollectionBase
{
    public void add(Shape shp)
    {
        List.Add(shp);
    }

    //indexer
    public Shape this[int index]
    {
        get {
            return (Shape) List[index];
        }
        set {
            List[index] = value ;
         }
     }
}


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