您的位置:首页精文荟萃软件资讯 → C#系列教程 2

C#系列教程 2

时间:2004/10/7 19:14:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            

本教程参考C#和ASP.NET程序设计教程撰写,有什么不足之处请大家指出,或在老猫的理想BLOG留言。


继续上回,数组是我们经常用到的,我来介绍一下:数组是具有相同类型的一组数据。当访问数组中的数据时,可以通过下标来指明。c#中数组元素可以为任何数据类型,数组下标从0开始,即第一个元素对应的下标为0,以后逐个递增。数组可以一维也可多维。
   //包含6个元素的一维整数数组;
    int[] mf1=new int[6]; //注意初始化数组的范围,或者指定初值;
   //包含6个元素的一维整数数组,初值1,2,3,4,5,6
    int[] mf2=new int[6]{1,2,3,4,5,6};
    //一维字符串数组,如果提供了初始值设定项,则还可以省略 new 运算符
    string[] mf3={"c","c++","c#"};
    //一维对象数组
    Object[] mf4 = new Object[5] { 26, 27, 28, 29, 30 };
    //二维整数数组,初值mf5[0,0]=1,mf5[0,1]=2,mf5[1,0]=3,mf5[1,1]=4
    int[,] mf5=new int[,]{{1,2},{3,4}};
    //6*6的二维整型数组
    int[,] mf6=new mf[6,6];
   
    下面来看一个一维字符串数组的遍历
    using System;
    public class MikeCat
    {
    static void PrintArray(string[] arr)
    {
    //打印数组元素,arr.Length 表示数组元素的个数
    for(int i=0;i    {
    Console.WriteLine("arr[{0}]={1}",i,arr[i]);
    }
    }
    public static void Main()
    {
    string[] arr={"c","c++","c#"};
    //将数组作为一个参数传递
    PrintArray(arr);
    }
    }
程序结果:arr[0]=c arr[1]=c++ arr[2]=c#
   
    下面来看一个4行2列(4*2)的整型数组的遍历:
    using System;
    public class MikeCat
    {
    static void PrintArray(int[,] arr)
    {
    //通过两次FOR循环遍历二维数组
    for(int i=0;i<4;i++)//初始化i作为循环变量,i++实现该变量的自增运算。
    //for循环满足条件后执行完循环体一次后执行i++,然后进入下次循环。简单的c语法,这里做简单介绍照顾初学者。(详细可参阅谭浩强先生的c语言程序设计一书)
    {
    for(int j=0;j<2;j++)
    {
    Console.WriteLine("arr[{0},{1}]={2}",i,j,arr[i,j]);//打印每个二维数组元素
    }
    }
    }
    public static void Main()
    {
    //主函数
    //将数组作为一个参数传递
    PrintArray(new int[,]{{1,2},{3,4},{5,6},{7,8}};
    }
    }
 


运行结果:arr[0,0]=1 arr[0,1]=2 arr[1,0]=3 arr[1,1]=4 arr[2,0]=5 arr[2,1]=6 arr[3,0]=7 arr[3,1]=8
   
   
    类是面向对象程序设计的基本构造块,详细我们在后面介绍。这里我们介绍两个特殊的类,即object类和string类
    1.object类
    object类是预定义类System.Object的别名,它是所有其他类型的基类。c#中所有类型都直接或间接从object类中继承。因此,一个object类的变量可以赋予任何类型的值。
   int i=30;
object obj1;
obj1=i;
object obj2='a';

    2.string类
    string类专门用于对字符串的操作,他是预定义类System.String的别名
    string str1="mikecat";
    可以用"+"号连接两个字符串。
    string str2="username:"+"mikecat";
    如果访问单个字符,则要用下标。
    char c=str1[0];
    比较两个字符串是否相等,可用比较操作符"=="//有别于basic语法
    bool b=(str1==str2);

    c# 中,取消了c和c++中使用最灵活,也是最难掌握的指针。那么在c#中如何提供c/c++中的函数指针的功能?c#提供了委托(delegate),委托是继承自System.Delegate类的引用类型。它相当于函数指针原型。与函数指针不同的是,委托在c#中是类型安全的,委托特别适合于匿名调用。要使用委托需经过三个步骤,即声明、实例化、调用。
    using System;
    //声明一个名为mfDelegate的委托,该委托有一个string类型的参数
    //c#编译器编译时会产生一个新类,该类继承自System.Delegate,类
    //名为mfDelegate
    public delegate void mfDelegate(string name);
   
    public class MikeCat
    {
    //定义与mfDelegate有相同参数类型的方法Hello()
    public static void Hello(string name)
    {
    Console.WriteLine("您好,{0}!",name);
    }
    //定义与mfDelegate有相同参数类型的方法GoodBye()
    public static void GoodBye(string name)
    {
    Console.WriteLine("再见,{0}!",name);
    }
    public static void Main()
    {
    //创建一个mfDelegate实例 mf1
    mfDelegate mf1=new mfDelegate(Hello);
    //调用mf1
    mf1("mikecat");
    mfDelegate mf2=new mfDelegate(GoodBye);
    mf2("mikecat");
    //将mf1 mf2组合成一个新的委托mf3
    mfDelegate mf3=mf1+mf2;
    //调用mf3
    mf3("迈克老猫");
    //从组合的委托mf3中删除mf1
    mfDelegate mf4=mf3-mf1;
    mf4("mikecat");
    }
    }
 


 程序结果:您好,mikecat!//mf1; 再见,mikecat!//mf2
   您好,迈克老猫! 再见,迈克老猫!//mf3
   再见,mikecat!//mf4

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本