C#基础笔记1
1>>数据类型:
Int
double:小数
char:字符型,只能存储一个字符,并且存储的这个字符要用单引号引起来。如:‘a’;
string:字符串,可以储存多个字符,用双引号引起来(0个或一个也可以);
deimal:与钱有关的梳子类型,数字后需要加m/M;
bool:布尔类型。用来表示真假两个概念,在以c#中用ture/false表示;
enum:枚举
struct:结构,每个变量成为结构里的成员;在结构里,默认为私有(private)成员
byte:无符号字符型;范围:0~255之间。
数据类型可以分为两大类:值类型和引用类型:
2>>变量声明的方法:
- 先声明,再赋值。(int a; a=1;)
- 定义变量时直接赋值(int a=1;)
- 一次声明多个同类型的变量,多个变量名称之间用逗号分隔,一分号结束。
3>>变量的命名规则:
- 必须以字母,_或@符号开头
- 后面可以跟任意字母数字和下、
注意:变量名不要与C#系统中的关键字重复,并且要区分大小写。
定义变量时,变量名要有意义:
C#变量名编码规范——Camel命名法:
首个单词的首字母小写,其余的单词的首字母大写(在方法中定义变量,要使用Camel命名法)
Pascal命名规范:每一个单词的第一个字母都要大写,如果使用到英文单词的缩写,全部大写。
4>>赋值运算符和赋值表达式
“+”号在C#中的意义:数学中的加法运算、连接
在Console.WriteLine(””)中,第一个变量/字符串可以使用占位符(可以重复使用)
占位符由{数字}组成,数字由0开始编号。
Console.WriteLine():有多个参数时,输出都是第一个参数,从第二个参数开始都是用来替换地一个参数中的占位符的值,所以,从第二个参数开始要不要输出就要看第一个参数中有没有相关的占位符。
5>>转义字符
转义字符是由一个\+一个字母组成的具有特殊意义的字符:
常用转义字符:
\n:换行
\b:退格
\t:对齐
在字符前加入一个@有两种意义:
- 字符串如果有\,则不在理解为转义字符
- 字符串可以换行定义。
6>>用户输入(凡是用户输入的内容全部用字符串来处理)
接收用户输入的内容必须定义一个字符串来进行接收。
Static void main(string[] args)
{
String input;
Input = console.ReadLine(); //string input = console.ReadLine();
}
7>>算术运算符
+、-、*、/、%都是二元运算符,参与的两个操作数的类型必须相同,并且经过运算后的结果也与操作数的类型相同。
类型自动转换规则:
当类型不一致时,满足以下条件时,系统会自动转换
(1) 参与运算的两个数据类型兼容
(2) 必须一边的数据类型表示范围小,一边的数据类型表示范围大,并且把小的转向大的不会丢失精度。
++:自加一,有前加和后加
Int age=18;
Int sum=age++ -10;
上面代码age是后加,所以在进行运算时,age++取原值参与运算,所以sum=8。
Int age=18;
Int sum=++age-10;
上面代码是后加,所以在进行运算时,++age取新值参与运算,所以sum=1.
总之,不管++age还是age++,经过运算后,age的值都进行了加一运算。
--、+=、-=、*=、/=、%=
在C#中,一般情况下,一元运算符的优先级大于二元运算符。
8>>数据类型转换
- 隐式转换(小—>大)
隐式转换就是系统默认的、无需指明的转换。它只允许发生在从范围较小的数据类型到值范围较大的数据类型的转换。
- 显式转换(大—>小)
显式转换又称强制转换,他需要在代码中明确声明转换的类型。
- 装箱和拆箱
装箱和拆箱允许值类型变量和引用类型变量相互转换。装箱是将值类型转换成引用类型,拆箱是将引用类型转换成值类型。
装箱/拆箱对执行效率的影响显然,从原理上可以看出,装箱时,生成的是全新的引用对象,这会有时间损耗,也就是造成效率降低。那该如何做呢?首先,应该尽量避免装箱。比如上例2的两种情况,都可以避免,在第一种情况下,可以通过重载函数来避免。第二种情况,则可以通过泛型来避免。
字符串无法强制转换成数字类型。
Convert不再仅是内存级别的转换,而是考虑数据意义的转换,Convert是一个加工、改造的过程。
Convert.ToInt32(待转字符串/待转字符串名字);
Convert.Tostring每种类型都还有Tostring()方法
一切类型都可以转换成string。
9>>C#中异常捕获
try
{
有可能出现错误的代码
}
Catch
{
出错后的处理
}
如果try中的代码没有错误,则程序正常运行try中的内容后,不会执行catch中的内容;如果try中的代码一旦出错,程序立即跳入catch中去执行代码。那么try中出错代码后面的代码不再执行。
10>> if else if
11>>switch case
12>> while循环语法
While(循环条件)
{
循环体
}
执行过程:
- 先判断循环条件,如果为true ,则跳转到第二步;如果条件为false,则执行第三步;
- 执行循环体,执行完后转向第一步;
- 跳出循环;
/*先判断,再执行*/
13>> do while
do
{
循环体
} while(循环条件);
14>> for循环语法 |
for ( 1表达式一;表达式二;表达式三)
15>>常量:
语法:
Const 类型 常量名=常量值;//在定义时赋值,在其他地方不允许改变值。
16>>枚举:
让我们定义一种枚举类型,并且在定义这种类型时,我们要指定这个类型的所有值。可以定义在与类平行的地方中或方法中。
语法:
enum 类型名称(自定义)
{
值1,
值2,
值n
};
作用:1限制用户不能随意赋值,只能在定义枚举时列举的值中选择
2不用死记每个值是什么,只需要选择相应的值。
注意:定义枚举时,值不能是int类型。
枚举类型的变量都可以以强制转换成一个int类型,枚举的值在定义时有一个默认的编号,从零开始的。
字符串转换成枚举:
(类型名称)(Enum.parse(typeof(类型名称),”待转换字符串”));
17>>结构
为什么要用结构:
- 为了储存一个人的信息,要申明一组变量,当我们要储存n个人的信息时,就要声明n组变量,麻烦。
- 储存一个人的信息的几个变量间没有关系,容易记错。
语法:
访问修饰符
struct 结构名
{
定义结构成员
}
注意:定义好一个结构后,就可以直接声明相应的变量了,声明好变量后,通过变量名,成员名来访问结构的成员。
17>>数组
数组可以帮多个帮助我们一次声明多个同类型的变量,这些变量在内存中是连续储存的。
语法:数据类型[] 数组名 = new 数据类型[数组长度];//一维数组
数组类型[ , ] 数组名 = new 数组类型[行数,列数];//二维数组
18>> 随机数发生器
Random random
= new Random();
变量名 = random.NEXT(a,b);
19>> Readint()
读取输入的整数,定义成方法,多次调用,(如果用户输入的是数字则返回,如果输入的不是数字,则提示用户重新输入)
static void Main(string[] args)
{
int
a = 8,b = 7;
int
maxnum = max(a,b);
Console.WriteLine("最Á?大䨮值¦Ì为a"+maxnum );
Console.ReadKey();
}
public static int max(int x1 ,int x2)
{
int
temp;
if
(x1 > x2 )
{
temp = x1;
}
else
{
temp = x2;
}
return
temp;
}
20>>方法(函数)
函数就是将一堆代码进行重用的一种机制。函数就是一段代码。这段代码可能有输入的值(参数),可能会有返回值。一个函数就像专门做一件事的人,我们调用他来做一些事情,它可能需要我们提供一些数据给他,它执行完成后可能会有一些执行的结果给我们。要求的数据就叫做参数。返回的执行结果就是返回值。
功能:用来复用代码的。当我们在一个程序中反复写同样的代码时,我们可以把需要重复写的代码定义到一个方法中,用的时候只需要调用即可。
语法:
[访问修饰符][static]
返回值类型 方法名
{
方法体;
}
方法的调用:如果是静态方法(由static修饰的)则使用 :类名.方法();
在类中调用本调的方法,可以只写方法名。
21>>变量的作用域
在方法中定义的变量称为局部变量,其作用域从定义开始到其所在的大括号结束为止。
在一个方法中访问另一个方法中的变量的方法:通过参数来实现。
22>>返回值
当调用者想访问我们方法中的变量时,可以通过返回值返回。
例如; string s = concole.ReadLine();
为什么方法前面能够定义一个变量收到方法的值,是因为在方法中使用了返回值。
只要在方法中返回了值,那么在调用方法中,前面就应该用一个变量来接收方法的返回值。
一个方法中只能有一个返回值。
最新文章
- Neutron 理解 (7): Neutron 是如何实现负载均衡器虚拟化的 [LBaaS V1 in Juno]
- Guava----Function
- 【BZOJ-1131】Sta 树形DP
- 打造理想的Windows 10 APP开发环境的5个步骤
- LeetCode(84) Largest Rectangle in Histogram
- java web多线程
- linux 内核参数图解
- php常用正则表达式函数
- ps 网页配图设计
- PHP实现冒泡排序、双向冒泡排序算法
- hdu 5664 Lady CA and the graph(树的点分治+容斥)
- python进阶学习(二)
- 华为7.0系统最简单激活xposed框架的流程
- mac 删除文件夹里所有的.svn文件
- Linux环境下tomcat的安装与使用
- github使用个人总结
- Linux中目录proc/net/dev详解【转】
- SpringMVC实现RESTful服务
- 【热更新IK词典】ElasticSearch IK 自动热更新原理与实现
- bzoj2865 字符串识别