C#语言的特点
- 不允许直接操作内存,去掉了指针操作。
- 彻底的面向对象设计:封装、继承、多态
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace studyDaily
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("人因梦想而伟大");
Console.WriteLine(" --雷军");
Console.ReadLine();
}
}
}
C#命名空间
存储了不同类型物品的仓库,通过using指令获取所需物品
类
一种数据结构
可以封装数据成员、方法成员和其他的类
C#支持自定义类
使用类
先声明
class [类名]
{
[类中的代码]
}
Main方法
一般是创建项目时自动生成的
- 在类或结构内声明,必须是static的而不是公用public的。
- 返回类型为:void或int
- 可以包含命令行参数string[]args,也可以不包括
Console类
控制台应用程序的标准输入输出流和错误流
- Read
- ReadLine
- Write
- WriteLine
Read和ReadLine区别
- Read:返回值为int类型,只能记录int类型的数据
- ReadLine:返回值为string,可以将控制台输入的任何类型数据存储为字符串类型
经常使用它俩固定控制台窗体
Write和WriteLine区别
- Write:输出后不换行
- WriteLine:输出后换行
代码规则
- 尽量使用接口,然后使用类实现接口,以提高程序的灵活性
- 生成和构建一个长字符串时,尽量使用StringBuilder类型而不是string类型
- switch语句一定要有default语句来处理意外情况
- 接口的名称前加前缀“I”
- 方法命名为动宾短语
- 定义成员变量时,最好加前缀“_”
变量
一种技术使用户能够方便地访问到二进制数据的内存地址
主要用来存储特定类型的数据,用户可以根据需要随时改变变量中所存储的数据值。
变量的声明及初始化
- 对变量命名的过程就是声明一个变量
- 变量在使用之前,必须进行声明并初始化
- 变量的初始化实际上就是给变量赋值
成员变量
根据变量的“有效范围”将变量分为成员变量和局部变量
静态变量
class Test
{
int x=45;
static int y=90;
}
- 在类体中定义的变量称为成员变量,成员变量在整个类中都有效。又分为静态变量和实例变量。x:实例变量
类变量,在成员变量的类型前面加上关键字static
静态变量的有效范围可以跨类,甚至可达到整个应用程序之内。可使用“类名.静态变量”的方式在其他类中使用
局部变量
局部变量的声明周期取决于方法,当方法被调用时,C#编译器为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将被销毁。
数据类型
- 值类型
- 引用类型
值类型
- 简单类型
- 复合类型
简单类型
整数
整数表示方式
十进制、八进制(0开头)、十六进制(0x开头)
整数类型
- sbyte:8位有符号整数 -128-127
- short:16位有符号整数
- int:32位有符号整数
- long:64位有符号整数
- byte:8位无符号整数 0-255
- ushort:16
- uint:32
- ulong:64
有符号可存正数与负数,无符号之恶能存放不带符号的整数
浮点
- float:精确到7位数
- double:精确到15-16位数
包含小数点的数默认是double类型
float Sum=9.2f;
float Sum=9.2F;
浮点类型的变量默认值是0
- decimal类型
128位数据类型,精度可达28位。
用于财务和货币计算
decimal Money=1.2m;
布尔
bool x=true;
字符
C#中使用Char类来表示,主要用来存储单个字符,占用16位(两个字节)的内存空间。
- 用单引号表示
- 双引号表示的是字符串
Char类只能定义一个Unicode字符
Char类的使用
IsDigit:指示某个Unicode字符是否属于十进制数据类别
IsLetter:是否属于字母类别
IsLetterOrDigit:是属于字母还是十进制
IsLower:是否小写字母
IsNumber:
IsPunctuation:是否属于标点符号类型
IsSeparator:是否分隔符
IsUpper:是否大写字母
IsWhiteSpace:是否空白
Parse:将指定字符串的值转换为它的等效Unicode字符
ToLower:转小写
ToString:转字符串
ToUpper:转大写
TryParse:将字符串转Unicode
char a='a';
Console.WriteLine("IsLetter方法判断a是否为字母:{0}",Char.IsLetter(a));
转义字符
- \n:回车换行
- \t:横向跳到下一制表位置
- \":双引号
- \b:退格
- \r:回车
- \f:换页
- \:反斜杠
- \':单引号
- \uxxxx:四位十六进制所表示的字符
复合类型
- 枚举类型
- 结构类型
引用类型
- 预定义引用类型
- 自定义引用类型
预定义引用类型
- object
- string
自定义引用类型
- 数组
- 类
- 接口
- 委托
常量
程序运行过程中,值不能改变的量。
- const
- readonly
const
静态常量:在编译时就已经确定了的值
在声明时就进行初始化,而且之后不可以再进行更改
readonly
动态常量:可以进行动态赋值
只能在构造函数中赋值
const与readonly区别
- const必须在声明时初始化,而readonly可以延迟到构造函数中初始化。
- const在编译时就被解析,即将常量的值替换成了初始化的值,而readonly常量的值需要在运行时确定。
- const可以在类或方法体中定义,而readonly只能在类中定义。
运算符
- 自增自减
++x;--x;前置表示:x自身先加一或减一,其运算结果是自身修改后的值,再参与其他运算
x--;x++;后置表示:自身加一或减一,运算结果是自身未修改的值。先参与其他运算,再自增自减1。
b=a++;
相当于:
b=a;
a++;
//先取值后自增
b=--a;
相当于:
--a;
b=a;
自增自减操作符只能作用于变量。
如果程序中不需要操作原来的值,可选用前置。
后置必须要先保存原来的值。
低精度类型自增
byte a=1;//创建byte变量a
a=a+1;//让a的值加1:无法将int数转换为byte
a+1的结果没进行强制类型转换时,结果是一个int值,无法直接赋值给byte变量
btye a=1;
a+=1;