C#基础(二)拆箱与装箱,循环与选择结构,枚举
一、装箱和拆箱
装箱是将值类型转换为引用类型
eg:
Int a=5;
Object o=a;
拆箱是将引用类型转换为值类型
eg:
Int a=5;
Object o=a;
Int b=(int)o;
利用装箱和拆箱功能,可通过允许值类型的任何值与 Object 类型的值相互转换,将值类型与引用类型链接起来
二、运算符和表达式
类别 |
运算符 |
说明 |
表达式 |
算术运算符 |
+ |
执行加法运算(如果两个操作数是字符串,则该运算符用作字符串连接运算符,将一个字符串添加到另一个字符串的末尾) |
操作数1 + 操作数2 |
- |
执行减法运算 |
操作数1 - 操作数2 |
|
* |
执行乘法运算 |
操作数1 * 操作数2 |
|
/ |
执行除法运算 |
操作数1 / 操作数2 |
|
% |
获得进行除法运算后的余数 |
操作数1 % 操作数2 |
|
++ |
将操作数加 1 |
操作数++ 或++操作数 |
|
-- |
将操作数减 1 |
操作数-- 或--操作数 |
|
~ |
将一个数按位取反 |
~操作数 |
运算符 |
计算方法 |
表达式 |
求值 |
结果(假定 X = 10) |
+= |
运算结果 = 操作数1 + 操作数2 |
X += 5 |
X = X + 5 |
15 |
-= |
运算结果 = 操作数1 - 操作数2 |
X -= 5 |
X = X - 5 |
5 |
*= |
运算结果 = 操作数1 * 操作数2 |
X *= 5 |
X = X * 5 |
50 |
/= |
运算结果 = 操作数1 / 操作数2 |
X /= 5 |
X = X / 5 |
2 |
%= |
运算结果 = 操作数1 % 操作数2 |
X %= 5 |
X = X % 5 |
0 |
优先级(1 最高) |
说明 |
运算符 |
结合性 |
1 |
括号 |
( ) |
从左到右 |
2 |
自加/自减运算符 |
++/-- |
从右到左 |
3 |
乘法运算符 除法运算符 取模运算符 |
* / % |
从左到右 |
4 |
加法运算符 减法运算符 |
+ - |
从左到右 |
5 |
小于 小于等于 大于 大于等于 |
< <= > >= |
从左到右 |
6 |
等于 不等于 |
= != |
从左到右 从左到右 |
7 |
逻辑与 |
&& |
从左到右 |
8 |
逻辑或 |
|| |
从左到右 |
9 |
赋值运算符和快捷运算符 |
= += *= /= %= -= |
从右到左 |
自加自减
表达式 |
类型 |
计算方法 |
结果(假定 num1 的值为 5) |
num2 = ++num1; |
前置自加 |
num1 = num1 + 1; num2 = num1; |
num2 = 6; num1 = 6; |
num2 = num1++; |
后置自加 |
num2 = num1; num1 = num1 + 1; |
num2 = 5; num1 = 6; |
num2 = --num1; |
前置自减 |
num1 = num1 - 1; num2 = num1; |
num2 = 4; Num1 = 4; |
num2 = num1--; |
后置自减 |
num2 = num1; num1 = num1 - 1; |
num2 = 5; Num1 = 4; |
转义字符:
转义序列 |
字符 |
\’ |
单引号 |
\” |
双引号 |
\\ |
反斜杠 |
\0 |
空 |
\a |
警告 |
\b |
退格 |
\f |
换页 |
\n |
换行 |
\r |
回车 |
\t |
水平制表符 |
\v |
垂直制表符 |
二、选择结构
1.
If(条件)
{
<语句块>
}
Else
{
<语句块>
}
2.
Switch(选择变量)
{
Case 值1:
...
Break;
Case 值2:
...
Break;
......
Case 值n:
......
Break;
Default:
......
}
Switch....case 语句其他特征:
- 各个case标签不必连续,也不必按特定顺序排列
- Default 标签可位于switch...case结构中的任意位置
- Default标签不是必选的,但使用default标签是一个良好的编程习惯
- 每两个case标签之间的语句数不限
四、循环结构
循环结构用于对一组命令执行一定的次数或反复执行一组命令,直到指定的条件为真
(一)循环结构的类型
While循环
While循环反复执行指定的语句,直到制定的条件为假
While(条件)
{
//语句
}
Break语句可以用于退出循环
Continue 语句可以用于跳过当前循环并开始下一循环
Do....while循环
Do....while循环与while循环相似,两者的区别在于:Do....while循环中即使条件为假时也至少执行一次循环体中的语句
Do
{
//语句
}
While(条件)
for循环
for循环要求只有在对特定条件进行判断之后才允许执行循环
这种循环用于将某个语句或语句块重复执行预定次数的情形
For
{
//语句
}
foreach循环
foreach循环用于遍历整个集合或数组
Foreach(数据类型 元素(变量) in 集合或数组)
{
//语句
}
五、数组
数组是同一数据类型的一组值
数组属于引用类型,因此存储在堆内存中
数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行
1.不赋值
Int []a=new int[5];
2.声明并赋值
Int []a=new int[5]{0,9,8,7,6};
Int []a=new int[ ]{0,9,8,7,6};
Int []a={0,9,8,7,6};
注意:数组的初始值的数目必须和数组的一样
六、冒泡排序
口诀:
n个数字来排序
两两相比小靠前
外层循环n-1
内层循环n-1-i
For(int i=0;i<n-1;i++)
{
For(int j=0;j<n-1-i;j++)
{
//比较j和j+1位置的元素,如果前大后小就交换
}
}
七、枚举
枚举是一组已命名的数值常量
用于定义具有一组特定值的数据类型
枚举以关键字enum声明
默认情况下,将0值赋给枚举的第一个元素,然后对每个后续的枚举元素按1递增
在初始化中可以重写默认值
Public enum weekdays
{
Monday=1,
Tuesday=2,
Wednesday=3,
Thursday=4,
Friday=5
}
C# 中的结构可以在其内部定义方法并可包括构造函数,但不能无参
C#基础(二)拆箱与装箱,循环与选择结构,枚举的更多相关文章
- JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法
JAVA进阶之旅(一)--增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法 学完我们的java之旅,其实收获还是很多的,但是依然还有很 ...
- .NET基础知识(02)-拆箱与装箱
装箱和拆箱几乎是所有面试题中必考之一,看上去简单,就往往容易被忽视.其实它一点都不简单的,一个简单的问题也可以从多个层次来解读. 常见面试题目: 1.什么是拆箱和装箱? 2.什么是箱子? 3.箱子放在 ...
- 《Java基础知识》Java包装类,拆箱和装箱
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...
- .NET面试题解析(02)-拆箱与装箱
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 装箱和拆箱几乎是所有面试题中必考之一,看上去简单,就往往容易被忽视.其实它一点都不简单的,一个简单的问题也 ...
- JAVA中拆箱和装箱
浅谈JAVA中拆箱与装箱 一. 什么是装箱?什么是拆箱? 在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i = new Integer(10) ...
- Java知多少(24)包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...
- C# 拆箱与装箱及优化
1.概念 装箱在值类型向引用类型转换时发生,在堆中分配. 拆箱在引用类型向值类型转换时发生. 2.装箱拆箱的过程 //这行语句将整型常量1赋给object类型的变量obj:众所周知常量1是值类型,值类 ...
- [Java学习] Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...
- Java包装类、拆箱和装箱详解
转载:https://www.cnblogs.com/ok932343846/p/6749488.html 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程, ...
- int和Integer及拆箱与装箱
int和Integer 如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下In ...
随机推荐
- 把连续动态bmp转换为avi
把动态bmp24转换为avi BYTE tmp_buf[1024*768*4]; //生成avi void BMPtoAVI(CString szAVIName, CString strBmpDir) ...
- 关于这个该死的报错:TypeError - 'undefined' is not a function (evaluating '_getTagName(currWindow).toLowerCase()')
在利用Selenium爬取页面信息的时候突然报错,第一条信息爬取的时候还好好的,第二条就不行了. 请参考网上的爬取代码: # coding=utf-8"""Created ...
- 在.Net Core中使用MongoDB的入门教程(二)
在上一篇文章中,讲到了MongoDB在导入驱动.MongoDB的连接,数据的插入等. 在.Net Core中使用MongoDB的入门教程(一) 本篇文章将接着上篇文章进行介绍MongoDB在.Net ...
- 异常-----freemarker.template.TemplateException: Error executing macro: write
freemarker自定义标签 1.错误描述 六月 05, 2014 11:31:35 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严 ...
- MFC,ADO方式实现数据库操作
参考: MSDN数据访问编程 (MFC/ATL): https://msdn.microsoft.com/zh-cn/library/kd4ck1tt.aspx?f=255&MSPPError ...
- JAVA简便解析json文件
JAVA简便解析json文件 首先放上我要解析的json文件: { "resultcode":"200", "reason":"S ...
- js+jq实现图片预览,支持到ie9+ff+chrome
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- VS中,Ctrl+Shift+F无法在文件中查找
可能是和搜狗的繁简字切换的快捷键冲突了,把搜狗的该快捷键修改或者关闭掉即可.
- 项目角度谈矢量切片运用以及Geoserver处理自定义规格矢量切片方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1. 背景 矢量切图方案目前已经是很常见的一个方案,在2016年时团队 ...
- Devstack 安装OpenStack Pike版本(单机环境)
问题背景 最近在研究OpenStack的时候,需要对其源代码进行调试,公司服务器上部署的OpenStack环境又不能随意的进行折腾,为了研究的持续性和方便性,就决定再自己的虚拟机上面使用Devstac ...