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 ...
随机推荐
- Flex中对表格中某列的值进行数字格式化并求百分比
1.问题背景 一般的,需要对表格中某列的数值进行格式化,对该数值乘以100,并保留两位小数,添加"%" 2.实现实例 <?xml version="1.0" ...
- jquery.lazyload.js实现图片懒加载
个人理解:将需要延迟加载的图片的src属性全部设置为一张相同尽可能小(目的是尽可能的少占宽带,节省流量,由于缓存机制,当浏览器加载了一张图片之后,相同的图片就会在缓存中拿,不会重新到服务器上拿)的图片 ...
- ontimer 与多线程
一般来说,在MFC中开启一个UI线程可以用以下代码: m_pCameraThread = AfxBeginThread(RUNTIME_CLASS(CCameraThread)); if (!m_pC ...
- 浅谈MySQL的优化
平时在开发中大多在写业务逻辑,很少关注于底层sql的执行效率,大多能交给batis的mapper做的就交给它去做. 然而这些天越来越发现,大家还是很愿意手写sql的,往往一段业务逻辑,可以用稍微复杂一 ...
- (右偏树)Bzoj2333: [SCOI2011]棘手的操作
题面 戳我 Sol 右偏树滑稽+并查集 再在全局开一个可删除的堆(priority_queue) 注意细节 # include <bits/stdc++.h> # define RG re ...
- python 数据结构简介
栈(stack) 定义: 数据集合,只能在一端(首尾)进行删除和插入的列表. 特点: 后进先出(LIFO) 典型作用: 括号匹配:左括号进栈,右括号跟左括号对应则出栈,例如:(({{[]}}))匹配 ...
- error:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
问题:同样的代码,只能插入一组值,第二组值插入不了 解决:开始我将app_id作为主键,但很明显,同一个app_id会有不同的index,而同一个index也可能对应不同的app_id,因此只能添加一 ...
- VS中使用.NET Reactor进行代码混淆
.NET Reactor相信大家都不陌生,网上使用教程也很多.但绝大多数都只介绍到软件的使用,而对于在VS中使用介绍的不多. 首先,在.NET Reactor的Help中Add In,如下图. 重启V ...
- 简单探讨 javascript 闭包
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个对Array的求和.通常情况下,求和的函数是这样定义的: function sum(arr) { ret ...
- C#多线程编程(7)--锁
一提到线程同步,就会提到锁,作为线程同步的手段之一,锁总是饱受质疑.一方面锁的使用很简单,只要在代码不想被重入的地方(多个线程同时执行的地方)加上锁,就可以保证无论何时,该段代码最多有一个线程在执行: ...