Csharp+Asp.net系列教程(二)

原创 2004年05月07日 22:25:00

迈克老猫
来自:老猫的理想

本教程参考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<arr.Length;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

zookeeper学习系列(一)zookeeper简介

1 zookeeper作用。 一个消息进行网络传输,当网络发生故障时,发送方并不知道接收方是否收到消息。发送方唯一能做的就是再次进行连接,并且进行轮询来确定接收方是否已接收信息。zookeeper不能...
  • fanfan159357
  • fanfan159357
  • 2015年12月01日 01:10
  • 257

Laravel系列2入门使用

最好的教程是官方文档! homestead安装好,就可以使用了。 laravel new command will create a fresh Laravel installation...
  • elesos
  • elesos
  • 2016年09月01日 16:29
  • 209

MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查

上节已经学会对MySQL进行简单的增删改查了,那么,我们如何实现用Java来对数据库操作增删改呢。 本节将用Java演示对MySQL进行增删改查。 简单的来说,分为4个步骤: 1、加载连接器(驱动) ...
  • qq_26525215
  • qq_26525215
  • 2016年08月06日 15:03
  • 5580

SpringBoot入门系列:第二篇 再学Hello World

Spring-Boot是Spring的新东东,为了让人尽快的使用,它提供了一个非常好的辅助工具,直接为我们生成Maven架构的工程。下面,我们通过helloworld看 一、在浏览器中打开htt...
  • u012930316
  • u012930316
  • 2017年07月28日 14:01
  • 323

Java NIO系列教程(十二) Java NIO与IO

原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html 作者:Jakob Jenkov   译者:郭蕾    校对:方腾飞 当学习了J...
  • fw0124
  • fw0124
  • 2015年03月17日 15:22
  • 1788

SpringBoot入门系列:第二篇 再学Hello World

Spring-Boot是Spring的新东东,为了让人尽快的使用,它提供了一个非常好的辅助工具,直接为我们生成Maven架构的工程。下面,我们通过helloworld看 一、在浏览器中打开http:...
  • lxhjh
  • lxhjh
  • 2016年06月24日 13:25
  • 26937

cyk追楠神系列一

Problem Description 众所周知,cyk 是个奇特的人,有一天,他终于又做出了一个惊 (zheng) 人 (chang) 的决定,他决定追楠神了!于是 cyk 就写了一封信向楠神...
  • xiaoxinxinev5
  • xiaoxinxinev5
  • 2016年12月13日 11:05
  • 277

(一)蓝牙低功耗(BLE)基础教程--基于nRF5x系列SOC

本系列教程的目的是帮助读者了解nRF5x系列SOC和蓝牙低功耗(BLE)的基础知识。本篇将介绍蓝牙广播的相关知识,以一种简单有趣的方式向读者介绍蓝牙的基本功能,为读者进一步深入理解BLE相关知识提供了...
  • bi_jian
  • bi_jian
  • 2017年07月29日 16:10
  • 241

解密SVM系列(二):SVM的理论基础

上节我们探讨了关于拉格朗日乘子和KKT条件,这为后面SVM求解奠定基础,本节希望通俗的细说一下原理部分。一个简单的二分类问题如下图: 我们希望找到一个决策面使得两类分开,这个决策面一般表示就是W...
  • on2way
  • on2way
  • 2015年08月17日 19:14
  • 9543

《深入理解mybatis原理(七)》 MyBatis的架构设计以及实例分析

MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,...
  • pfnie
  • pfnie
  • 2016年05月31日 17:29
  • 1027
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Csharp+Asp.net系列教程(二)
举报原因:
原因补充:

(最多只允许输入30个字)