数组:

代码

  //二维数组
        String[,] abcd = new string[2, 4];//建立一个2*4的数组
        abcd[0, 0] = "田洪川";
        // abcd[0,1] = "";
        abcd[0, 2] = "自由职业者";
        abcd[0, 3] = "26岁";
        abcd[1, 0] = "黄晓梅";
        abcd[1, 1] = "女";
        abcd[1, 2] = "造价师";
        abcd[1, 3] = "24岁";

for (int i = 0; i < abcd.Rank; i++)//循环数组的维数
        {/*利用GetUpperBound(abcd.Rand-1)得到数组最大维数索引上限,如果是GetUpperBound(0),
          * 就是最小维数的索引上限,数组的索引上限为3,所以这里的循环用了 <= ,而GetUpperBound(int demension)
          *该方法的参数dimension所指定的维数是从0开始的,所以需要:GetUpperBound(abcd.Rank-1),指定第二维的最大索引上限.
          *或者这样指定:GetUpperBound(1)指定第二维最大索引上限,那么abcd第二维为4,索引为3.就得到了最大索引了.
          */
            Response.Write(abcd.Rank + "<br>");
            for (int j = 0; j <= abcd.GetUpperBound(abcd.Rank - 1); j++)
            {
                Response.Write(abcd[i, j] + "<br/>");
            }

}

结构和枚举

struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征。下面的示例显示了一个简单的结构声明。

public struct Book
{
    public decimal price;
    public string title;
    public string author;
}

结构还可以包含构造函数、常量、字段、方法、属性、索引器、运算符、事件和嵌套类型,但如果同时需要上述几种成员,则应当考虑改为使用类作为类型。

结构可以实现接口,但它们无法继承另一个结构。因此,结构成员无法声明为 protected。

结构可以在命名空间中,也就是和类一样的地方声明.

示例:

代码

public partial class Default6 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //结构:
        Book b = new Book();
        b.price = 12.5m;
        b.title = "c#高级编程";
        b.Author = "未知";
        Response.Write(b.price + " "+b.title +" "+b.Author+"<br/>" );

//枚举:
        Response.Write((int)Color.red);
    }

public enum Color
    {
        red = 5,
        green = 7,
        blue = 9
    };

public struct Book
    {
        public decimal price;
        public String title;
        public String Author;
    }
}

循环:

代码

        //循环:
        string str = "abcdefghijkmlnopqrstuvwxyx";
        for (int i = 0; i < str.Length; i++)
        {
            Response.Write(str[i] + "<br/>");
        }

int j = 0;
        do
        {
            j++;
            Response.Write(j + "<br/>");
        } while (j < 5);//do...while是先执行再判断所以能输出5为止

int k = 0;
        while (k < 5) //而while是先判断再执行所以只能输出到4为止
        {
            Response.Write(k + "<br/>");
            k++;
        }

string [] thc=new string[]{"labcd","2acde","33areff","4fcds2","dcccasa","6egfds"};
        foreach (string s in thc)
        {
            if (str.Contains("a")) //contains("a")表示a是否出现在该字符串中返回bool值
            {
                Response.Write(s+"<br/>");
            }
        }

函数(传值,传地址):

代码

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
             int i = 1;
             transmitValue(i);
             Response.Write("传递后的变量值:" + i + "发现值无任何变化的,因为是传值<br/>");
            transmitReference(ref i);
            Response.Write("传递后的变量值:" + i +"发现值变化了,因为传的是地址<br/>");
        }
    }

//传值
    private void transmitValue(int i)
    {
        i = 5;
        Response.Write("传值:"+i+"<br/>");
    }

//传引用,实际上传的是内存地址
    private void transmitReference(ref int i)
    {
        i = 5;
        Response.Write("传引用:" + i + "<br/>");
    }

运算符重载:

因为重载的是系统定义好的那些运算符,这样一来问题就出来了,因为很容易混淆到底这个运算符是做什么的,简言之,他会让代码的易读性降低,那你可能会问了,既然如此那为什么还要学呢?原因很简单,因为在某些特定的环境下,他能够代码更加的简洁,也就是能够把复杂的问题给简化了.

所以记住只有在运算符对类型具有很直观的意义(例如,支持表示数值的类型的两个实例相加)的情况下,才应进行运算符重载.不应使用运算符重载为非直观运算提供语法快捷方式.否则很难保证三个月后你自己都搞不懂你曾今做了什么.

事实上,我们早就在用运算符重载了,记得前面我们讲算术运算符的时候说到加号,它实际上就是这样的,你看,当遇到数值类型的数据,它执行算术运算功能,当遇上字符串型的时候呢,他又执行的是连接的功能.

以对称方式重载运算符:
       例如,如果重载相等运算符,也应重载不能运算符.同样,如果重载小于运算符,也应重载大于运算符.

示例:

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class fuhao
{
    private string thc;

private int age;

public fuhao(string nthc,int nage)
    {
        thc = nthc;
        age = nage;
    }

public string Thc
    {
        get
        {
            return thc;
        }
    }

public int Age
    {
        get
        {
            return age;
        }
    }

/*运算符:
    一元:!、~、++、--、-(负号)、*(指针)、&、sizeof
    二元:*、/、%、+、-、<<、>>、<、<=、>、>=、==、!=、&、^、|、&&、||、=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=
    三元:? :*/
    /*一元运算只需要一个参数就可以得出结果*/
    /*二元运算就需要两个参数来得出结果如下面例子的==,+,!=这些都是二元运算*/

//operator是C#的关键字,用来指定你要重载的运算符如:
    /// <summary>
    /// 重载==运算符判断对象属性是否相等
    /// </summary>
    public static bool operator ==(fuhao a, fuhaoTest b)
    {
        if (a.Thc == b.Name && a.Age == b.Age)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

public static bool operator !=(fuhao a, fuhaoTest b)
    {
        return !(a == b);
    }

public static string operator +(fuhao a, fuhao b)
    {
        return "<br/>" + a.Thc + a.Age + "<br/>" + b.Thc + b.Age;
    }
}

public class fuhaoTest
{
    private string name;

public string Name
    {
        get { return name; }
        set { name = value; }
    }

private int age;

public int Age
    {
        get { return age; }
        set { age = value; }
    }

public fuhaoTest(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

}

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default6 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        fuhao thc = new fuhao("田洪川", 27);
        fuhaoTest hxm = new fuhaoTest("黄晓梅", 11);

Response.Write(thc == hxm);
        Response.Write("<br/>");
        Response.Write(thc != hxm);
        Response.Write("<br/>");
        Response.Write(thc+thc);
        Response.Write("<br/>");
    }
}

一:c#基本语法(2)(老田学习笔记)相关推荐

  1. 老庞学习笔记:段永平语录

    老庞学习笔记:段永平语录 作者:庞升东 http://alan.51.com/   MSN: 200551@gmail.com  QQ:508012651 版权声明:可以任意转载,转载时麻烦以超链接形 ...

  2. DMU软件 语法高亮 vim设置--学习笔记6

    用vim编程时, DMU的关键词没有语法高亮, 看着不舒服, 就进行一下设置, 并记录过程. 设置的效果如下 设置流程 本次设置的比较简单, 将关键词分为: 模型model, 比如DMU1, DMU2 ...

  3. Vue.js 基础语法 入门语句 Vue学习笔记 v-model 双向数据绑定

    Vue.js 基础语法,入门语句,Vue学习笔记 学习网站:https://www.bilibili.com/video/BV15741177Eh vue 的体验 响应式:数据一旦改变,视图就会响应改 ...

  4. Verilog语法-模块module[Day2学习笔记]

    1概述 Verilog HDL是一种用于数字逻辑电路设计的硬件描述语言,可用来进行数字电路的仿真验证.时序分析.逻辑综合. 用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型 ...

  5. python 3.6.0新语法,Python 3.6学习笔记(附2018最新python初学者入门视频教学)

    开始之前 基础示例 Python语法基础,python语法比较简单,采用缩紧方式. # print absolute value of a integer a = 100 if a >= 0: ...

  6. 用python处理excel的基本语法_Python操作Excel学习笔记(28):条件格式

    excelperfect Excel支持3种不同类型的条件格式:内置.标准和自定义.内置条件格式将特定规则与预定义样式相组合.标准条件格式将特定规则与自定义格式相组合.此外,可以定义自定义公式来应用使 ...

  7. android驱动开发 老罗,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序(老罗学习笔记3)...

    在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法.简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的 ...

  8. jdbc(B站动力节点老杜)学习笔记复习使用

    jdbc概述 什么是jdbc? java语言连接数据库的一套接口,jdbc是SUN公司定制的一套接口 为什么要SUN公司要制定一套接口? 每个数据库的底层实现原理不同,程序员要想使用java连接某一个 ...

  9. 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)...

    在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行.今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件.因此,软件和硬件的关系 ...

最新文章

  1. 面试题:查询连续出现的数字
  2. 自编码clone图解
  3. 解析mysqlbinlog日志_每日学点---Mysql的binlog日志解析导出
  4. linux mq发送测试消息,WebSphere MQ测试常用指令
  5. 605. 种花问题 golang 切片越界问题和逻辑操作符的思考
  6. Win10和Ubuntu20.04双系统启动引导项修复指南
  7. URLEncoder URLDecoder
  8. [转载]软件测试学习资料
  9. ubuntu下锐捷客户端连接校园网
  10. Android 特效大全代码资源——源码
  11. Java入门视频教程
  12. python编程100例海绵宝宝-Python_Turtle库画一只派大星
  13. 阿里云服务器可选系统有哪些?如何选择?
  14. Python入门-网络编程
  15. appcan使用心得体会
  16. 极验验证——滑块拼图验证码
  17. 佛说五百年的回眸才换来今生的擦肩而过
  18. 1413-数列求和 ZCMU
  19. 微计算机最新科技应用论文,微计算机应用
  20. 【linux命令】我常用的Linux命令

热门文章

  1. java项目怎么定义异常_在Java项目中如何实现自定义异常
  2. iOS 11开发教程(八)定制iOS11应用程序图标
  3. Tweet信息搜集工具tinfoleak
  4. Arduino可穿戴教程之第一个程序——选择端口(三)
  5. Kali Linux 安全渗透教程第二更Linux安全渗透简介
  6. 查看服务器CPU配置信息,转帖-CentOS查看CPU信息、位数、多核信息;查看服务器硬件信息...
  7. Unigui 服务器解析php,如何正确使用uniGUI的HyperServer(负载均衡)功能
  8. dns被自动修改_部分 DNS 查询延迟的原因与解决方案
  9. mysql 中lock wait_应用中MYSQL 报错Lock wait timeout exceeded; try restarting transaction
  10. 别吵吵内卷了,看看人家虚拟人:连续直播70天都没工资