招聘网站JD:
熟悉C#语言——构成C#语言的基本元素随便拿出一个你都认识,常见的基本元素都能正确使用它。
精通C#语言——构成C#语言的基本元素随便一个都能正确使用不出错,而且还能在更深层次上理解这些元素,了解背后运行的机制。
编程就是一门手艺,是不断学习锻炼出来的。
1 构成C#语言的基本元素
标记:对于编译器来说有意义的编号。编译器能够识别出来。注释和空白对编译器没有意义。
1.1 关键字(Keyword)
关键字就是构成一门编程语言的基本词汇。例如汉语常用词汇有7、8万。
C#语言属于高级语言,所以C#语言是人类语言非常小的一个子集。小到只能能够表达我们人类逻辑思维就够了。
1.2 操作符(Operator)
也叫运算符(+ - * /)
1.3 标识符(Identifier)
给变量、类、类的成员起名字,就是标识符。
之前提到的类的成员:属性、方法、事件,给这些起名字,都是标识符。
我们给这些起名字的时候,要有非常严格的规范。
1.3.1 什么是合法的标识符
1.不能跟关键字重复。关键字又叫保留字(这门编程语言已经把这些字保留了)。
2.可以用大小写字母、数字、下划线。不能用数字开头。
3.如果硬要拿关键字做标识符,那就在前面加上@
4.标识符或关键字:标识符的开始字符+标识符的后续部分字符 opt指的可选的意思
5.标识符开始字符:
letter-character 字符
_ (the underscore character U+005F ) 下划线
6.标识符的后续字符:
identifier-part-character 单个字符
identifier-part-characters identifier-part-character 多个后续字符+单个后续字符
用这种方式可以组成无限长的后续字符
7.单个的后续字符:
letter-character 字母
decimal-digit-character 数字
connecting-character
combining-character
formatting-charaacter
汉语也可以做标识符:
1.3.2 大小写规范
变量名规定用——驼峰法:myVaribale
类名、名称空间——帕斯卡:Main ; Console
1.3.3 命名规范
变量名要有意义,类的成员也要有意义。
属性要是个名词,方法要是个动词or动词短语
1.4 标点符号
① ; 每一句结束用分号
② { } 花括号
1.5文本(字面值)
int x =2; //这个2就是字面值,大家认可就是2
1.5.1 整数
int x =2; //普通整型32位 long y=3L; //长整型64位
1.5.2 实数
float x=3.0F; //单精度浮点数32位 double y =4.0D; //双精度浮点数64位
1.5.3 字符
char c = 'a'; //单引号只能引一个字符
1.5.4 字符串
string str ="a"; //也可以是空的
1.5.5 布尔值
bool b1 = true; bool b2 = false;
1.5.6 空(null)
string str = null;
案例:让form=null,系统会报错
1.6注释与空白
1.6.1 单行
//
1.6.2 多行(块注释)
/*
*/
1.6.3 空白
Form f = new Form();
很多空格恢复快捷键:ctrl +k ctrl +d 老师说是ctrl+e ctrl+d 下次再试一下
2 初识类型、变量和方法
2.1初识类型(Type)
亦称数据类型(Data Type)
var x =3; Console.WriteLine(x.GetType().Name);
用var来声明变量,编译器可以识别数据类型。
结果:Int32 :32个比特位来存储的结果。
如果在3后面加个L,就变成了长整型,用64位来存储结果。
如果给一个3.0,系统默认为Double类型(双精度浮点数)
如果给3.0F,系统给Single(单精度浮点数)
2.2变量
变量是存放数据的地方,简称“数据”。
① 变量的声明;② 变量的使用;
示例:
int y; //变量的声明:变量数据类型+变量名称。
y = 100; //变量的使用:把一个能够与这个变量相匹配的字面值or运算结果,通过赋值符号交给变量 // 存储在这个变量里。
2.3 方法
class Program
{
static void Main(string[] args)
{
Calculator c = new Calculator(); //c是引用变量,引用了Calculator这个实例
int x = c.Add(2, 3);
Console.WriteLine(x);
string str =c.GetToday(); //第二个时间的案例
Console.WriteLine(str);
c.PrintSum(4, 6); // 第三个不需要返回值的案例
}
}
class Calculator
{
public int Add(int a,int b) //public:类Calculator之外也可访问这个函数
//Add是一个方法,也是一个加工厂,a b是原料
{
int result = a+b; //加工方式
return result; //成品给调用工厂的人
}
public string GetToday() //第二个时间的案例
{
int day =DateTime.Now.Day;
return day.ToString();
}
public void PrintSum(int a,int b) //第三个没有任何数据返回,就要用void数据类型
{
int result = a + b;
Console.WriteLine(result);
}
}
2.4程序=数据+算法
有了变量和方法就可以写有意义的程序了!
3.算法简介
3.1循环
示例:
class Program
{
static void Main(string[] args)
{
Calculator c = new Calculator();
c.PrintXTo1(10);
}
class Calculator
{
public void PrintXTo1(int x)
{
for (int i = x; i > 0; i--)
{
Console.WriteLine(i);
}
}
}
}
3.2递归
递归:指一个方法可以调用自己。
class Program
{
static void Main(string[] args)
{
Calculator c = new Calculator();
c.PrintXTo1(10);
}
class Calculator
{
public void PrintXTo1(int x)
{
if(x==1)
{
Console.WriteLine(x);
}
else
{
Console.WriteLine(x);
PrintXTo1(x - 1);
}
}
}
}
3.3 计算1到100的和
class Program
{
static void Main(string[] args)
{
Calculator c = new Calculator();
int result = c.SumFrom1ToX(100);
Console.WriteLine(result);
}
class Calculator
{
//循环法:
//public int SumFrom1ToX(int x)
//{
// int result = 0;
// for (int i = 0; i < x+1; i++)
// {
// result = result + i;
// }
// return result;
//}
//递归法:
public int SumFrom1ToX(int x)
{
int result = 0;
if(x==1)
{
result = x;
}
else
{
result = x+ SumFrom1ToX(x - 1);
}
return result;
}
}
}
更简便的算法(公式):
public int SumFrom1ToX(int x)
{
return (1 + x) * x / 2;
}