Console.WriteLine("hello word");//此函数为标准输出,在C sharp里为打印输出
string s = Console.ReadLine();//声明s为string型的变量,把用户输入的字符串赋值给s变量 console.readline()相当于标准输入
Console.WriteLine(s);//把光标停留在函数上可以看到函数的返回值如:(string value)
Console.ReadKey();//此函数为按下一个按键后退出 把KEY理解为按键
int i ;//声明一个整数型变量i
// 单行注释(单行注释法) 注释符中间不能加空格
/* 表示注释开始 (多行注释法)注释符中间不能加空格
*/ 表示注释结束 (多行注释法)注释符中间不能加空格
Console.WriteLine(i1+"+"+i2+"="+(i1+i2)); //括号内优先!
Console.WriteLine("{0}+{1}={2}", i1, i2, i1 + i2);//{}内为占位符,意思代表i1占位0,i2占位1,i1+i2占位2
占位符为通用型,占位符从0开始顺序就是writeline第二个参数开始的顺序
C#数据类型
int 整数型 如:1 2 3 不用引号
string 字符型 如:我爱你 双引号
char 字符型 如:a b c 单引号
bool 逻辑型 如: true false 真和假
C#变量名命名规则 (这也是类和函数的命名规则)
C#中是可以用中文做变量名和类名以及函数名的! (尽量不用中文做变量名以及函数名类名,效率低下)
必须以下划线或者字母开头命名其后的字符可以是任意个数字,下划线,字母!建议变量名用小写字母
不能全部(全称)使用c#的关键字,如:class namespace new vold等,判断方式:VS中亮蓝色的为关键字
C#变量命名
可以连续声明几个变量如:int i1,i2,i3;
可以声明时就赋值 如:int i1=20;
也可以声明变量不赋值 如:int i1;
局部变量用之前必须要赋初值 如:i1=20;
C#运算符
+(加) -(减) *(乘) /(除) %(求余数)
+可以用作字符串链接,其他运算符不可以!
++(自增每次加1),--(自减每次减1)
运算优先级为:先乘除后加减,不用死记,括号才是王道
括号优先级:最内侧的括号先运算,依次由内而外!
变量可以和字面量(赋值了的变量)混合运算,如:int i1=10; int i2=i1+10;console.writeline(i2);
C#赋值运算
让左边变量等于右边的计算结果!
+= -= *= /= 如:i+=2; i-=2; i*=2; i/=2; 分别解释为:i=i+2; i=i-2; i=i*2; i=i/2;
C#布尔运算(bool 逻辑型)
相等判断:== 是否相等 如书写代码:int i=20; console.writeline("{0}",i==1); 则输出false(假)!
int i=30; console.writeline("{0}",i=1); 说明:c#中赋值表达式也有值,它的值表示为赋值后变量的值!也就是输出1
不等判断:!= 是否不等于 如书写代码: int i=20;console.writeline("{0}",i!=1); 则输出true (真) !
大小比较:>大于,<小于,>=大于或等于,<=小于或等于
取反:!
组合运算:&& 且,||或 说明:&&且为两边都为true(真)时才为true(真),||或为两边有一边为true(真)时就为true(真)
C#if语句 bool(逻辑型)
注意事项:if语句后面不用加分号;
如果if语句内只有一行代码,则要不要大括号都是一样的执行效果
所以哪怕if语句只有一行代码,也要加大括号,养成好习惯!!!
一定要测试边界条件(负数,长文本,长数字,不常用字符,中文等异常情况)
if(i>1) 说明:如果i大于1就执行大括号内的代码类似易语言里的如果真!
{
}
if(i>1) 说明:如果i大于1 则执行第一个大括号内代码,如果不大于1,则执行第二个大括号内代码 类似易语言里的如果!
}
}
else
{
}
if(i>1) 说明:如果i大于1执行第一个大括号,如果i<1则执行第二个大括号,如果i既不大于1也不小于1则执行第三大括号
{ 类似易语言里的判断
}
else if(i<1)
{
}
else
{
}
if语句的循环嵌套
if(i>1&&i<1||i=1) 说明:如果i大于1且i小于1或i=1就执行大括号内代码
{
}
C#数据类型转换
convert.toint32(); //将字符串转换到整数
convert.tostring();//将整数转换到字符串
int i1 = Convert.ToInt32(Console.ReadLine());//声明i1变量,用户输入的值直接转换为整数型存到i1变量
C#转义符
双引号 /"
换行符 /n
反斜线 //
多个反斜线 在"" 在前面加@(@"")就不会被认为是转义符
@只针对转义符/有作用!
/转义符只针对在代码中直接写出来的字符串有作用,对于从程序中读取出来的没有问题
Console.WriteLine("/"ab/"");//输出“ab”
Console.WriteLine("a/nb");//输出换行的ab
Console.WriteLine("//"); //输出1个/
Console.WriteLine(@"");//输出4个
字符串加引号 "/"ab/"" 也就是说字符串类型前后加引号的话要用/" 当转义字符!
为什么要用转义符,因为编译器默认是遇到"为字符串开始,再遇到"为字符串结束的!
C#语法
从上到下依次运行代码
大小写敏感(区分大小写)
函数参数用()包围
两句代码之间用;分号分割(易错,全角问题)
注释:单行注释,多行注释
C#变量
声明变量的方式:类型 变量名;
变量的类型:不同的类型放不同的数据!
变量的作用域在{}括号内,而在{}内声明的变量 括号外是用不了的
C#调试
可在代码左边行号左边点击左键来标记断点,程序执行到断点可把光标移动到变量上进行查看当前变量的值
C#退出
return; 是执行到return;时就退出整个函数(main),而控制台一旦main退出就退出整个窗口了
C#循环的中断
break; 立即终止整个循环 跳出循环
continue; 立即终止当前循环步骤,进行下一次循环步骤
C#循环while
语法为(如下)判断循环首
while(i<100) //判断i小于100为true则循环,也就是括号内判断为真true则循环,false假则终止
{
console.writeline("{0}",i++);
}
循环判断首(如下)
do //先进行循环一次,再进行判断
{
console.writeline("{0}",i++);
}
while(i<100);
C# switch分支判断,case以及default和break的使用
注意:如两个case下面执行的语句相同则可以合并为(如下)
case 1:
case 2:
console.writeline("这是1和2");
break;
代码示例如下:
console.writeline("请输入一个数");//提示用户输入一个整数
int i=console.readline(); //用户输入一个整数存到整数型变量i中
switch(i)
{
case 1://字符串形式为case ("1"): 注意case后面跟的是冒号不是分号,且case比较的值只能是字面值,也就是数字和字符串!表达式不可!
console.writeline("这是1");
break; //跳到下一个判断
case 2:
console.writeline("这是2");
default: //defaule否则!
console.writeline("请输入数字");
}
C#调试
可在代码左边行号左边点击左键来标记断点,程序执行到断点可把光标移动到变量上进行查看当前变量的值
C#退出
return; 是执行到return;时就退出整个函数(main),而控制台一旦main退出就退出整个窗口了
C#循环的中断
break; 立即终止整个循环 跳出循环
continue; 立即终止当前循环步骤,进行下一次循环步骤
C# for循环 代码示例如下:
for(i=1;i<10;i++)
{
console.writeline("hello word");
}
for(int i=100;i<=0;i--)
{
console.writeline("i");
}
for(code1;code2;code3)
解释:code1:循环的初始化代码,只在循环开始之前运行一次;code2:bool类型的表达式,每次循环完成后都判断一下是否为true,只有为true才会进行下一次循环;code3:在每次循环之后执行一次。
for的三段都可以省略,但是不能丢“;”
break; continue永阳可以应用于for。
for和while代码之间都可以互相转换,究竟用哪种方式则取决于一些惯用用法和个人习惯,不不用记,代码写多了自然就有感觉
C# 类型转换cast (转换)
把源类型复制给目标类型,两个类型不一致的时候会发生类型转换,a=b,b是源,a是目标
隐式转换:当目标类型一定能满足源类型转换过去后的要求的话就是隐式转换;
显式转换:如果当目标类型不一定能满足源类型转换过去后的要求的话就需要显示转换(程序员自己负责)。
显示转换代码示例为:int i=255; byte b=(byte)i;
隐式转换代码示例为:byte b=255;int i=convert.toint32(b);
强制类型转换只能对应同一类型,如byte和int都是存储数字的则可以相互转换,但是string和int不是同一类型则不可以~因为一个是字符串类型一个是数字类型
C# 类型转换convert (转变)
convert.toint32();转换到int类型
convert.tostring();转换到string类型
C# 枚举
枚举要声明在程序最上面的class上 代码示例为:
enum boy{男,女,二椅子}; enum是枚举声明,boy是枚举的类型名称, 男女二椅子则为枚举成员
引用枚举成员代码示例为:boy b=boy.男; 依次为:枚举名称,声明的变量=枚举名称内的枚举成员.
枚举只能为确定数量,确定的几个值如:东南西北,男女,冷热等!广泛的数量不适用于枚举
C# 数组
C#中数组从0开始,而易语言则从1开始 要区分开
取数组成员数的函数为:value.length
声明数组的方法为:在声明的类型后加[]则为该类型的数组形式 代码示例:string[] b={"1","2","3"};
自定义数组的长度,代码示例为:string[] s = new string[5];
C#foreach循环,数组循环
语法示例:
foreach和for循环的区别在于,for循环可以隔一个遍历一次,而foreach是不能隔的!
string[] names={a,b,c};
foreach(string name in names) //这里解释为 定义一个name的string型的变量,然后把names数组的每个值放到name变量里遍历出来
{
console.writeline("我的名字{0}",name);
}
C#函数
函数和类的名字都要大写开头
函数就是将一堆代码进行重用的一种机制,函数就是一段代码,这段代码可能有输入的值,可能会返回值。
一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它
执行完成后可能会有一些执行结果给我们。要求的数据就叫参数,返回的执行结果就是返回值。
console.readline就是一个有返回结果的函数;
console.writeline("hello");就是一个有执行参数的函数,只有告诉writeline被打印的数据它才能知道
如何打印;
int i-convert.toint32("22");则是一个既有参数又有返回值的函数。
有了函数写代码就像拼积木,C#中的各种各样的技术其实就是通过for,if等这些基础的语法将不同的函数
按照一定的逻辑组织起来。
写函数 代码示例如下:
static int readint() //解释:static不用管,int是返回值类型,readint是函数名称,()必须有!
{
string s=console.readline();//用户输入的数字存到S变量
return convert.toint32(s); //转换S变量的数据到整数,退出函数返回一个值,return后要返回的数据类型必须是声明的类型
}
引用函数 代码示例如下:
int i=readint();
console.writeline(i);
注意,如果函数没有返回值,则再返回值类型写上void 代码示例如下:
static void sayhello()
{
console.writeline("hello");
return;//如果没有返回值则直接return就可以了 不用后面加返回的数据
}
代码练习:整数型返回值(比较两个数的大小)
函数代码示例:
static int max(int i1,int i2)
{
if(i1>i2)
{
return i1;
}
return i2;
}
调用以上函数
console.writeline(max(20,40));
代码联系:整数型数组 (计算数组内所有参数的和)
函数代码示例:
static int sum(int[] values)
{
int sum=0;
foreach(int i in values)
{
sum=sum+i;
}
return sum;
}
调用以上函数
int values={2,3,5,6,7};
int sum=sum(values);
console.writeline(sum);
确定函数参数的原则:自己能确定的数据自己内部解决,自己确定不了的数据通过参数传递。
C#可变参数
可变参数数组必须是最后一个params
代码示例如下:
static void SayHello(string name,params string[] names)
{
console.writeline("我的名字是{0}",name);
foreach(string s int names)
{
console.writeline("我的昵称是{0}",s)
}
}
调用以上函数:
SayHello("2b","1b","3b")
C#函数重载
也就是函数的名字可以重复,但是参数类型不能一样(不严谨不推荐使用)
C#字符串的处理
字符串的不可变性指的是内存中的字符串不可变,而不是变量不可变。
C#中单个字符用单引号包含就是char类型,('a'),单引号中有且只能放一个字符。
char c1='a';单引号内必须为一个字母,且不能为空
在C#中对文本等处理的取文本长度函数为length, 示例:s.length
string类型可以看做是char类型的只读数组,char c=s[1];例子:遍历输出string中的每个元素。
C#中字符串char有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引
来读取指定位置的char,不能对指定位置的char进行修改。
如果要对char进行修改,那么就必须创建一个新的字符串,用s.tochararray()方法得到字符串的char数组,
对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串。
一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。代码示例如下:
string s1="hello"; //声明一个字符串赋值内容为hello
char[] chars=s1.tochararray();//声明个char型数组把s1的各个字符赋值到char数组内
chars[0]='a';//chars数组第0个位置修改为a
string s2=new string (chars);//声明s2的字符串变量。把chars修改后的数据传到s2
console.writeline(s2);//输出s2
C#string类常用函数
tolower(),得到字符串的小写形式。代码示例 string s="ABC";s=s.tolower();
注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回
toupper(),得到字符串的大写形式;
trim(),去掉字符串两端的空白。
不区分大小写的比较字符 代码示例如下:
bool b="abc.Equals("ABC,stringcomparison.ordinalignorecase);
console.writeline(b);
C#字符串的分割
函数split是多个参数的分割函数!重载函数
代码示例为:
string s="aaa,bbb,ccc,ddd";
string[] strs=s.split(',');//括号内为分隔符
foreach(string item in s)
{
console.writeline(item);
}