一:c#基本语法(2)(老田学习笔记)
数组:
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。
结构可以在命名空间中,也就是和类一样的地方声明.
示例:
{
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/>");
}
}
函数(传值,传地址):
{
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.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.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)(老田学习笔记)相关推荐
- 老庞学习笔记:段永平语录
老庞学习笔记:段永平语录 作者:庞升东 http://alan.51.com/ MSN: 200551@gmail.com QQ:508012651 版权声明:可以任意转载,转载时麻烦以超链接形 ...
- DMU软件 语法高亮 vim设置--学习笔记6
用vim编程时, DMU的关键词没有语法高亮, 看着不舒服, 就进行一下设置, 并记录过程. 设置的效果如下 设置流程 本次设置的比较简单, 将关键词分为: 模型model, 比如DMU1, DMU2 ...
- Vue.js 基础语法 入门语句 Vue学习笔记 v-model 双向数据绑定
Vue.js 基础语法,入门语句,Vue学习笔记 学习网站:https://www.bilibili.com/video/BV15741177Eh vue 的体验 响应式:数据一旦改变,视图就会响应改 ...
- Verilog语法-模块module[Day2学习笔记]
1概述 Verilog HDL是一种用于数字逻辑电路设计的硬件描述语言,可用来进行数字电路的仿真验证.时序分析.逻辑综合. 用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型 ...
- python 3.6.0新语法,Python 3.6学习笔记(附2018最新python初学者入门视频教学)
开始之前 基础示例 Python语法基础,python语法比较简单,采用缩紧方式. # print absolute value of a integer a = 100 if a >= 0: ...
- 用python处理excel的基本语法_Python操作Excel学习笔记(28):条件格式
excelperfect Excel支持3种不同类型的条件格式:内置.标准和自定义.内置条件格式将特定规则与预定义样式相组合.标准条件格式将特定规则与自定义格式相组合.此外,可以定义自定义公式来应用使 ...
- android驱动开发 老罗,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序(老罗学习笔记3)...
在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法.简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的 ...
- jdbc(B站动力节点老杜)学习笔记复习使用
jdbc概述 什么是jdbc? java语言连接数据库的一套接口,jdbc是SUN公司定制的一套接口 为什么要SUN公司要制定一套接口? 每个数据库的底层实现原理不同,程序员要想使用java连接某一个 ...
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)...
在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行.今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件.因此,软件和硬件的关系 ...
最新文章
- 面试题:查询连续出现的数字
- 自编码clone图解
- 解析mysqlbinlog日志_每日学点---Mysql的binlog日志解析导出
- linux mq发送测试消息,WebSphere MQ测试常用指令
- 605. 种花问题 golang 切片越界问题和逻辑操作符的思考
- Win10和Ubuntu20.04双系统启动引导项修复指南
- URLEncoder URLDecoder
- [转载]软件测试学习资料
- ubuntu下锐捷客户端连接校园网
- Android 特效大全代码资源——源码
- Java入门视频教程
- python编程100例海绵宝宝-Python_Turtle库画一只派大星
- 阿里云服务器可选系统有哪些?如何选择?
- Python入门-网络编程
- appcan使用心得体会
- 极验验证——滑块拼图验证码
- 佛说五百年的回眸才换来今生的擦肩而过
- 1413-数列求和 ZCMU
- 微计算机最新科技应用论文,微计算机应用
- 【linux命令】我常用的Linux命令
热门文章
- java项目怎么定义异常_在Java项目中如何实现自定义异常
- iOS 11开发教程(八)定制iOS11应用程序图标
- Tweet信息搜集工具tinfoleak
- Arduino可穿戴教程之第一个程序——选择端口(三)
- Kali Linux 安全渗透教程第二更Linux安全渗透简介
- 查看服务器CPU配置信息,转帖-CentOS查看CPU信息、位数、多核信息;查看服务器硬件信息...
- Unigui 服务器解析php,如何正确使用uniGUI的HyperServer(负载均衡)功能
- dns被自动修改_部分 DNS 查询延迟的原因与解决方案
- mysql 中lock wait_应用中MYSQL 报错Lock wait timeout exceeded; try restarting transaction
- 别吵吵内卷了,看看人家虚拟人:连续直播70天都没工资