熟悉C#语言要求:对构成C#语言的基本元素,随便拿出一个你都认识,对于常见基本元素,都能正确使用它
精通C#语言要求:对于构成C#语言的基本元素,随便拿出一个都会使用,对于常用基本元素,你不但会使用,还不会出错时要在更深层次理解这些基本元素,了解背后运行的机制
文章目录
- 构成C#语言的基本元素
- 标记(Token)——六种基本元素
- 关键字(Keyword)—词汇
- 操作符(Opertator)—运算符
- 标识符(Identifier)—标记
- 标点符号
- 文本(字面值)
- 注释与空白
- 简要介绍类型、变量与方法
- 初始类型(Type)
- 变量
- 方法
- 算法简介
- 作业
构成C#语言的基本元素
标记(Token)——六种基本元素
关键字(Keyword)—词汇
构成一门编程语言的基本词汇,汉语常用词汇量七八万,英语常用词汇量也是七八万,C#是高级编程语言,它设计的初衷是用近似人类自然语言的语法,来表达编程逻辑,所以C#语言是人类自然语言一个非常非常小的子集,小到它的词汇量只要能够表达人类逻辑思维就行了,多余词汇就去掉不要了,C#语言有接近一百个词汇(关键字)
注意:
1,有些关键字有多个用途
2,关键字是按逻辑分组的
操作符(Opertator)—运算符
操作符也叫运算符,顾名思义是用来表达运算思想的符号,一共三四十个,分为以下几类:
Primary:基本操作符
x.y 点操作符
f(x) a[x] x++ x-- new typeof checked unchecked default(T) delegate sizeof ->
Unary:一元运算符,单目运算符,只能去操作一个操作数
+x -x !x ~x ++x —x (T)x &x *x
Multiplicative:乘法性操作符
x*y x/y x%y
Additive:加法性操作符
x+y x-y
shift: 位移(将内存中的一个数向左移向右移)
x<>y
Relational and type testing:关系操作符(比大小)和类型检验操作符(检验一个对象到底是不是一个类的实例)
xy x<=y x>=y is as
Equality:相等性操作符
x==y x != y
Logical AND: x&y
Logical XOR: x^y
Logical OR: x|y
Conditional AND : x && y
Conditional OR: x||y
Null-coalescing: x??y
Conditional: ?:
Assignment and lambda expression:
x=y x+=y x-=y x*=y x/=y x%=y x&=y x|=y
x^=y x<<=y x>>=y =>
标识符(Identifier)—标记
什么是标识符
俗话来说就是名字,取名起名字。给变量,类,类的成员(属性,方法,事件)起的名字都叫标识符,就像给人取名字有规范一样,给变量,类,类的成员起名字也有严格的规范
什么是合法的标识符?
1.首先一个标识符不能跟关键字冲突,关键字又叫保留字(这门编程语言已经把这个单词保留了,不能把这个单词当作标识符使用)
2.可以用字母(包括大写字母小写字母),数字和下划线,来组成标识符,但是不能拿数字开头,可以拿字母和下划线开头
符合这些规范的标识符是合法标识符
例外:如果想拿关键字当标识符,前面加上@符号
——怎样阅读C#语言定义文档(C#语言里的宪法)
大小写规范
驼峰命名法:几个单词合一起,头一个单词首字母小写,后面的单词开头字母大写,这叫驼峰法,变量名都是用驼峰法
帕斯卡命名法:构成标识符的每个单词的首字母大写,其他字母都小写。名称空间名,类名,方法名都是用这个方法命名
命名规范
在给变量,类,类的成员命名的时候,要求变量名,类名,类的成员名要有意义,保证代码的可读性强。
对类命名的时候,类的名字一定要是一个名词
对类的成员命名的时候,属性一定要是一个名词
方法一定要是一个动词,或者动词短语,因为它表示一个类能够做什么
标点符号
; {}
文本(字面值)
(1)整数
int x=2; //普通整型:用32个比特位存储这个整数
long y=3L; //长整型:整数加上后缀L,变成长整型,用64个比特位存储3这个整数
它们是用二进制来表示的
(2)实数(小数)
float x= 3.0; //用32个比特位表示一个浮点数
double y=4.0D; //用64个比特位表示一个浮点数
(3)字符
char c=‘a’; //单引号里只能有一个字符,为一个字符类型的变量赋值
(4)字符串
string str=“ABCDE”; // 双引号
string str=“a”;
区别:字符和字符串,类型完全不同
(5)布尔
bool b=true;
bool b2=false;
左边的是变量,右边的是文本
(6)空(null)
关键字,操作符,标识符,标点符号,文本统称为标记(Token),标记就是对于编译器来说,有意义的记号,编译器能够识别出这些东西
注释与空白
单行注释 //
块注释
/* string str = null;
Form f = null;
f.ShowDialog();
*/
空白
Form f = new Form();
f.ShowDialog();
编译器会把注释和空白忽略掉,注释与空白对于编译器来说没有意义,所以不算在标记(Tonken)之内
简要介绍类型、变量与方法
初始类型(Type)
也称数据类型(Data Type)
//var x = 3; //Int32//Console.WriteLine(x.GetType().Name);//var x = 3L; //Int64//Console.WriteLine(x.GetType().Name);//数据类型不一样,在内存中存储的形式不一样//var x = 3.0; //Double//Console.WriteLine(x.GetType().Name);var x = 3.0F; //Single:单精度浮点型Console.WriteLine(x.GetType().Name);//var自动获得变量的类型int x;x = 100;Console.WriteLine(x.GetType().Name);float x1;x1 = 3.0F; //Single,后面要加f,大小写均可Console.WriteLine(x1.GetType().Name); Double x2;x2= 3.0; //Double Console.WriteLine(x2.GetType().Name);
变量
变量是存放数据的地方,简称“数据”
声明变量格式
变量类型 变量名=初始值;
变量类型有14种
a.有符号的整型变量
能存储正负数和0 下面给出大概范围(赋值时超出范围会报错)
sbyte -128~127
int -21亿~21亿
short -32768~32767
long -9百万兆~9百万兆
示例代码
sbyte a = 1;Console.WriteLine("存储的数:"+a); //输出之间的连接用+
b.无符号的整型变量
能存储一定范围0和正数
byte 0~255
uint 0~42亿
ushort 0~65535
ulong 0~18百万兆
c.浮点数
float 存储7或8位有效数字,具体取决于编译器 四舍五入 从左到右非0数开始算有效数字
double 存储15~17位有效数字 C#中声明小数默认double类型
decimal 存储27~28位
float f = 0.1234f; //后面要加f 大小写均可double d = 0.12456434;decimal de = 0.124543534234t254m; //后面要加m 大小写均可
d.特殊类型
bool 变量值为true或false 表示真假数据类型
char 存储单个字符 单引号括住要赋的值
string 存储字符串 双引号括住要赋的值
string s1="hello", s2="world", s3="good"; //数据类型相同的多个变量可以同时声明
方法
旧称函数,成员函数,是处理数据的逻辑,又称为“算法”。方法可以理解为数据的加工厂,你把原料送进去,加工厂加工后把原料返还给你,这就是方法,方法就是数据的加工厂
方法的声明
方法的调用
三类常见的方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace MyExample3
{class Program{static void Main(string[] args){//方法的声明//方法的调用Caculator c = new Caculator();//int x= c.Add(2, 3);// Console.WriteLine(x);//string str = c.Today();//Console.WriteLine(str);c.PrintSum(4, 6);}}class Caculator{//有数据输入,有数据输出public int Add(int a, int b){ //定义方法,为了能够在类的外面能够访问方法,要加上publicint result = a + b;return result; //把结果拿到后返回给调用方法的人}//2.没有数据输入,有数据输出public string Today(){int day = DateTime.Now.Day;return day.ToString();}//3.有数据输入,没有数据输出,返回类型要用voidpublic void PrintSum(int a,int b){int result = a + b;Console.WriteLine(result);}}
}
程序=数据+算法
有了变量和方法就可以写有意义的程序了
算法简介
循环
递归
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace MyExample2
{class Program{static void Main(string[] args){Caculator c = new Caculator();int result = c.SumForm1ToX(3);Console.WriteLine(result);}}class Caculator{// 循环思想:占用内存比较少//public int SumForm1ToX(int x)// {// int result = 0;// for (int i =1; i < x+1; i++)// {// result = result + i;// }// return result;// }//递归思想;占用内存比较多//public int SumForm1ToX(int x)//{// if (x==1)// {// return 1;// }// else// {// int result = x + SumForm1ToX(x - 1);// return result;// }//}public int SumForm1ToX(int x){//数学算式return (1 + x) * x / 2;}}
}