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


-------------------
装箱和拆箱操作(Boxing/Unboxing)
-------------------

C#的装箱思想是全新的。上面提到过所有的数据类型,不论内置或用户自定义,全都从命名空间System的一个基类object派生出来。因此把基本的或者原始类型转换成object类型被称做装箱,反之,这种方式的逆操作被称为拆箱。

示例:

class Test
{
   static void Main()
   {
      int myInt = 12;
      object obj = myInt ;       // 装箱
      int myInt2 = (int) obj;    // 拆箱
   }
}

示例展示了装箱和拆箱操作。一个整型值转换成object类型,然后又转换回整型。当一个值类型的变量需要转换成引用类型时,一个object的箱子会被分配容纳这个值的空间,这个值会被复制进这个箱子。拆箱与此相反,一个object箱子中的数据被转换成它的原始值类型时,这个值将被从箱中复制到适当的存储位置。

-------------------
方法参数
-------------------

C#中有三种类型的参数:

值参数/输入型参数
引用型参数/输入输出型参数
Out参数

如果你有COM接口和它的参数类型的概念,你会很容易理解C#参数类型。

值参数/输入型参数
值概念与C++相同。所要传递的值会被复制到一个位置上并被传递给函数。

示例:

SetDay(5);
...
void SetDay(int day)
{
    ....
}


引用型参数/输入输出参数
C#中的引用参数既不是C++中的指针也不是引用操作符(&)来传递的。C#的引用型参数减少了出错的可能。引用型参数也被称作输入输出参数,因为你传递了一个引用地址,因此你可以从函数中传递一个输入值并且可以获得一个输出值。

你不能把一个未经初始化的引用型参数传递给函数。C#用ref这个关键字来声明引用型参数。当你传递一个变量给函数要求的引用参数时必须使用一个ref关键字说明。

示例:

    int a= 5;
    FunctionA(ref a);        // 要用ref声明变量,否则你会得到
                             // 一个编译错误
    Console.WriteLine(a);    // 指向地址的值为20

    void FunctionA(ref int Val)
    {
        int x= Val;
        Val = x* 4;
    }


Out参数
Out型参数仅仅从函数当中返回一个值。不要求有输入值。C#用关键字out来描声明这个参数

示例:

    int Val;
    GetNodeValue(Val);

    bool GetNodeValue(out int Val)
    {
        Val = value;
        return true;
    }



可变数量的参数和数组
数组在C#当中是通过关键字params来描述传递的。作为数组类型的变量,你能传递任意数量的元素。从下面示例中你可以理解的更好。

示例:

    void Func(params int[] array)
    {
        Console.WriteLine("number of elements {0}",array.Length);
    }

    Func();                      // prints 0
    Func(5);                     // prints 1
    Func(7,9);                   // prints 2
    Func(new int[] {3,8,10});    // prints 3
    int[] array = new int[8] {1,3,4,5,5,6,7,5};
    Func(array);                 // prints 8




-------------------
运算符和表达式
-------------------
运算符和表达式概念与C++完全相同。但是一些新的有用的运算符被填加了进来。我将在这里讨论其中的某些部分。

is 运算符
is 运算符被用于检查操作数的类型是否相同或者是否可以转换。is 运算符在多态环境下特别有用。它有两个操作数,运算结果是一个布尔型。看这个示例:

void function(object param)
{
    if(param is ClassA)
        //do something
    else if(param is MyStruct)
        //do something
    }
}

as 运算符
as 运算符检查操作数的类型是否可被转换或者是否相等(这些 as通过 is 运算符来完成。如果结果是可转换的,则结果将被转换或者被装箱,成object(关于as运算符进行装箱成目标类型的操作请看前面的装箱/拆箱操作)。如果不可转换或者装箱,则返回值是null。瞧一瞧下面的例子我们会更好地理解这个概念。

Shape shp = new Shape();
Vehicle veh = shp as Vehicle;   // 结果是null, 类型不可转换

Circle cir = new Circle();
Shape shp = cir;
Circle cir2 = shp as Circle;    //会被转换

object[] objects = new object[2];
objects[0] = "Aisha";
object[1] = new Shape();

string str;
for(int i=0; i&< objects.Length; i++)
{
    str = objects[i] as string;
    if(str == null)
        Console.WriteLine("can not be converted");
    else
        Console.WriteLine("{0}",str);
}

输出:
Aisha
can not be converted


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