控制台程序
console.writeLine(“想显示的内容”);
console.Readkey(); 程序会暂停,任输一个键程序停止。
C#中的数据
int: 整数,10位数以下,如3,5,-10,10
double:小数,如3.14,10.5,-3.14.-5.10
char:'一个字符’ 如‘A’,'b','男',' '
string:“字符串” 如“zhangsan”,“计算机”,”“ 0个字符也可以。
decimal:储存金钱,在数字后加m/M, 如 decimal=5.65m
“+”:两边为数字类型为加法意义; 有一边不是数字类型为连接意义。
占位符应用:console.writeLine(“我叫{0},今年{1}岁,工资{2}元。”,name,age,salary);
交换两个变量:
int a =10; int b =20; int temp; temp = a; a = b; b = temp; console.ReadLine();
// 用于接收用户的输入,要定义一个string类型接收便存储用户输入的值。
算术运算符:+, –, *, /, %(取余) 二元运算符
优先级:先乘除,后加减,先算括号,相同级从左往右,小括号可无限制套用。
数据类型转换
隐式转换:int----double(表达式中有一个double,其余均转double)
强制转换:(数据类型名)待转换值
如: double pl = 3.14;
int i=(int) pl;
当类型兼容可用强制转换,会丢失精度。
字符串与数据之间的转换
如: int a = convert.ToInt32(待转字符串)
convert.ToString 一切类型都可以转成字符串string类型。
转义字符:
:换行。
:退格。
:有多个空格组成的一个字符,具有行与行之间对齐功能。
\:表示一个
”:表示”
句子前加@,表示后面的字符串不再转义,可以使字符串写在多行
当在@后面需输入引号,可用2个引号表示1个引号。
异常捕获:
try(可能出现错误代码)
catch{出错后处理}
try{可能出现错误代码}
finally{无论是否出错,都会执行的代码}
自运算符:
++:自加
--:自减
+=:自加一个较大的数
-=:自减一个较大的数
*=: 自乘一个较大的数
/=:自除一个较大的数
%=:自余一个较大的数
关系运算符:
<, >, ==, !=, >=, <=
逻辑运算符:
&&:与 两边都符合才成立
|| : 或 一边符合即成立
!: 非 真变假,假变真
“与”的优先级高于“或”
在运算中:“或” 前一项为true,不再运行后一项。
“与” 前一项为false,不再运行后一项。
闰年的运算:DateTime.IsLeapYear()
if 结构
if(条件)
语句;
if-else 结构
if(条件)
{语句1}
else
{语句2}
if- else if 结构
if(条件1)
{语句1}
else if (条件2)
{语句2}
else if(条件3)
{语句3}
……
switch-case 语法
switch(表达式或变量)
{
case 值1:语句块1;
break;
case 值2:语句块2;
break;
case 值3:语句块3
break;
}
while 循环的语法
while(循环条件)
{
循环体
}
do-while 语法
do
{
循环体
}
while(条件);
for 循环
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1:定义循环变量和对其赋初值
表达式2:循环条件
表达式3:用于改变循环变量的值
break:在循环中用于退出循环,一般和if一起使用。
continue: 立即结束本次循环,进入下一次循环。
常量:不可改变。
const 类型 常量名=常量值
如:const double pl = 3.14;
枚举
enum 自取名称{值1,值2……值n}
把一个字符串转换成枚举类型:
(Gender)(Enum.Parse(type of (Gender),”待转字符串”))
结构体
访问修饰符 struct 结构名
{
定义结构成员(注:前加public)
}
数组语法
数组类型[] 数组名 = new 数据类型[数组长度]
如: int[] name = new int[5]
name[0]=…
name[1]=…
….
name[4]=…
console.clear(); 把屏清干净
排序
for(int i=0; i<number.length-1; i++)
{
for(int j=0; j<number.length-1-i ; j++)
{
if( > )
{交换}
}
}
方法
【访问修饰符】【static】返回值类型 方法名(【参数】)
{
方法体
}
1.方法在类中
2.如果方法没有返回值,则写void.
3.如果方法没有参数()不能省略
方法的调用:
如果是静态方法(由static修饰),则使用类名.方法名();
在自己的类中调用本类的方法,则可以只写方法名。
return:立即跳出本方法(一般与if条件联合使用)
变量的作用域:
1.在方法中定义的变量为局部变量,其作用域以定义开始,到所在大括号结束。
2.当被调用者想得到调用者方法中的变量,则可让调用者以参数的形式给调用者。
3.在方法名后面的括号内定义变量,叫做定义这个方法的参数。
这里定义的变量用于接收调用者传来的数据。
注:如果一个方法一旦有参数,那么调用者就必须传参数并且参数,并且参数的个数必须与对应位置上的类型必须一致。
当调用者想访问方法中的变量时,可通过返回值返回。
只要方法中的返回了值,那么在调用方法中,前面就应该用一个变量来接受方法的返回值。
注:一个方法只能有一个返回值
一旦方法有返回值,则在方法体中必须用return语句返回一个值,并类型一致。
return 返回值; void 改为相应类型
一个变量定义在类中,方法外叫字段,可被本类所有方法访问。
静态方法只能访问静态字段(static)
用const 定义的常量不能定义静态
重载:可以定义同名方法,但参数类型或个数必须不一样,调用可自动匹配。
方法重载与返回值没有关系。
在参数前加out,可通过参数返值,在传参数时也可out,表明侧重传出。
如果以out形式传入,在传入前可以不赋值。
在方法中由Out修饰的参数,必须在使用前赋值
面向对象(object Orient)
OO的特点:继承性,封装性,多态性
三层数据库系统:数据展示层,中间层,数据层。
产生一个m到n的随机数:
Radom r = new Radom(); while (ture) { int i = r.Next(m.n+1) console,readkey(); }
类是对象的类型,对象叫类的实例。
万物皆对象,对象有特征和行为,即属性和方法
类是抽象的概念,类不占内存,对象才占内存。
类的定义:
【访问修饰符】 class 类名
{
成员;
。。。
}
在自己写的类中,方法前先不加static
类的实例化:
类 实例名 = new 类名 ();
访问类的属性: 实例名.属性名
访问类的方法:实例名.方法名();
只要没加static的方法或属性,都必须先实例化,在通过实例名.方法名或实例名.属性名来访问。
加static的方法,可以直接通过类名.方法或类名.属性来访问。
访问修饰符
public:可以在任何地方被访问
internal:只能在本项目被访问
private:只能在本类中被访问 (默认)
protected :只能在本类或子类中被访问
定义一个变量,在这个变量中含get/set两个方法,叫属性。
public int Age
{
get
{
}
set
{
}
}
用value存储用户赋的值,用return返回值。
赋值调用set方法,读取调用get方法。
自动生成属性的方法:光标放在public int age(为例) 上点击用右键---重构---封装字段---确定---应用
同时按ctrl+R+E 确定,应用
具有get,set为读写属性,只有 get为只读属性(不能被修改),只有set为只写属性(用很少)。
当实例化一个类时,系统会自动对这个类的属性进行初始化。
数字类型----0 或0.0 string 类型-----null char 类型----- (AScall码0)
使用构造方法的好处:
1.对多个属性赋值,不需重复的写实例名。
2.可以保证用户在New一个对象的时候必须对某一个属性赋值。
3.在创建对象时,对只读属性初始化。
当定义好一个类后,如果没有写构造方法,那么系统会自动加上一个没有参数的构造方法
构造方法是一个特殊的方法,名称与类名相同,无返回值,void都省略不写,我们一旦手写一个构造方法后,系统默认的那个不再添加。
class Student { public Student(string name) { this.name=name; } }
要实例化一个类:必须调用它的构造方法
报错程序:
throw new Exception(“错误信息”);
params int[] 名称 可变数组
object[] 任意类型数组
命名空间(namespace)用来解决类的重名问题
不在一个命名空间下的类,不能直接被访问
若想访问
1.通过using 引用对方的命名空间
2.写全称 命名空间名.类名
ctrl+. 可自动添加命名空间
system:根命名空间
string 可以看作是char的只读数组,具有不可改变性
静态有static 修饰 类名.方法名
静态无static 修饰 实例名.方法名
修改字符串中的数:
string s = “Hello,World”
char[] mc =s.ToCharArray();
char s[1] = ‘i’
s = new string(chars);
字符串中的大小写
ToLower 转小写
ToUpper 转大写
不能改变字符串本身,需定义新的字符串接收
score A = scoreA. ToLower();
不可忽略大小写进行比较
if (score A.Equals(score B))
{
…..
}
可忽略大小写比较
if(scoreA.Equals(scoreB.stringComparison.OrdinalIgnoreCase))
{
……..
}
tostring 可将任何转换为string类型
字符串分割
string str = “my name is LiLei”;
string[] words = str.Split(‘【按什么进行分割】’)
string[] spilt(params char[] separator)
例: string[] words = str.split(removrChar,StringSplitOptions.RemoveEmptyEntries)
字符串替换
string Rrplace(string oldvalue, string newValue)
例:cent=cent.replace(word[i],”***”)
取子字符串
string substring(int startIndex) 取从位置startIndex开始到最后
string substring(int 32,int 4) 从第32个开始,取长度为4
查找并返回位置 (Index Of )
实例名.IndexOf(“*”)
实例名.IndexOf(“*”,n) 从n位置开始搜索
控件
Name:名字
Text:内容
String.Format(“{0}你好,name”) 占位符替换,用于字符串拼接
textBox1.Hide() : 文本框隐藏
命名潜规则:
按键 Button: btn
文本框 TextBox: txt
复选框 CheckBox: cb
退出程序 this.close(); 或 Application Exit()
禁止为空格: textBox1.text.trim()
报错程序
if (!int.TryParse(str1,outil)) { message.Show(“…是不合法的”) return; }
PasswordChar 如果设成× 或#,变成密码框
Multiline 多行
combox.Item.add(“”); 添加
combox.Item.clear(); 清空
textBox1.Append Text(); 赋加文本,保留原来值
int---string DateTime.New.Tostring()
局部变量每次运行完毕变量会被销毁,下次运行会初始化
而字段,只要一个对象生成,就会一直保留字段值