1、关于变量
【1】变量类型:
局部变量(在方法内部使用的变量,只能给这个方法自己使用)(随着方法执行完毕而销毁)
成员变量(方法外面、类的内部定义的,可以被类的内部其他方法使用) 随着对象销毁而销毁
全局变量(一般是public static修饰的)也就是说,其他任何类都可以通过《类名.全局变量名》
【2】变量使用
注意问题:变量使用时不能超出作用范围,也必须要先赋值,因为我们使用的变量,要求必须有一个明确值。
在字符串中:a = “”
和b = string.Empty
是一样的,但它们和string b=null;
是不一样的。
string a;
string b=null;
如果我们定义一个字符串变量,什么都没赋值,默认是null,以上虽然a和b都是null,但是有区别:null虽然是空值,但是这个是有赋值的过程。而a是没有赋值的。string c=a+"您好"; int lenght=a.Length;
直接使用未赋值的变量a时会报错。
【3】变量命名
在C#规范里面,变量命名是遵循的命名法是:camel命名法(首字母小写:studentName)
2、关于常量:
【1】使用:固定不变的值,可以定义为常量,在数学模型中经常使用。(做上位机的学员,经常使用)
【2】命名:一般都是大写(为了很好区分)
3、关于枚举
【1】为什么要用枚举?
我们知道,变量可以根据需要定义,来表示我们使用的数据。但是对于我们经常使用的,并且固定的几个值如果我们都定义成变量,使用和不方便,为什么?因为不好记忆!所以,把这几个有限的值,定义成枚举后通过VS智能提示,可以更加轻松的让我们使用。比如:MessageBox CommandType .....
【2】枚举定义的注意事项
- 第一,必须是有限个(不能太多,一般2-5个,6-10,11-20个)
- 第二,枚举表示的是整数。可以相互转换。
- 第三,枚举我们一般都定义到类外面。因为可以被其他的类使用。
4、关于运算符
【1】常见运算符(自己看预科)
【2】取模运算符(余数)%(在数据分页等都会用到) / 取商
【3】变量自增 num++ 和++mun num-- 和 --num 单独从执行的角度来讲是一样。
int num=10;
Console.WriteLine(num++);//输出10
Console.WriteLine(num);//输出11
Console.WriteLine(++num);//输出12
Console.WriteLine(num);//输出12
for循环中经常用i++
5、关于数据类型转换
自动类型转换:一般是值类型之间(精度小的值类型转换成精度大的值类型!)
static void Method6()
{
double a = 10.25;
int b = 20;
double result = a + b;
Console.WriteLine($"【自动类型转换】10.25+20={result}");
Console.WriteLine("--------------------------------------------------");
}
引用类型到object类型是可以直接转换的。(但是尽量避免,我们在这个地方也不举例)
强制类型转换:如果自动类型转换不了,必须使用强制转换! (int)reader["列名"]
【1】值类型之间强制转换
static void Method7()
{
Console.WriteLine(" \r\n【强制转换1】:(类型名) 表达式 \r\n");
double a = 10.25;
int b = 20;
int result = (int)a + b; //实现强制类型转换,但是精度会丢失
Console.WriteLine($"【dobule-->目标int】10.25+20={result} 【精度会丢失】");
a = 10.50;
result = (int)a + b; //实现强制类型转换,但是精度会丢失
Console.WriteLine($"【dobule-->目标int】10.50+20={result} 【精度会丢失】");
a = 10.55;
result = (int)a + b; //实现强制类型转换,但是精度会丢失
Console.WriteLine($"【dobule-->目标int】10.55+20={result} 【精度会丢失】");
Console.WriteLine("--------------------------------------------------");
}
【2】字符串和值类型之间强制转换
(需要注意的是这个字符串必须是值类型的有效表示形式:“20.5” 可以 “20.A”则不可以)
static void Method9()
{
Console.WriteLine(" \r\n【强制转换2】:类型.Parse('字符串') \r\n");
//有效类型的【字符串】转成【值类型】要求:字符串的格式必须符合目标类型的有效形式
double a = double.Parse("20.5");
float b = float.Parse("20.25");
int c = int.Parse("20");
//非有效形式:张三李四 20.2==>int
//将值类型转成字符串类型,直接使用ToString()方法
string aa = a.ToString();
string bb = b.ToString();
string cc = c.ToString();
Console.WriteLine($"a={aa},b={bb},c={cc}");
Console.WriteLine("--------------------------------------------------");
}
【3】万能转换器(如果你是一个初学者,前面两种方式你可能记不住,如果没有特殊要求,你都可以使用万能转换器)需要注意的一点是:小数部分等于0.5的时候,转换的结果看整数部分:整数部分为奇数时自动进位、整数部分为偶数时不自动进位。
6、关于分支结构
为什么要使用分支结构? 当我们处理的业务,需要有不同情况,这时候就得单独处理,就用到分支结构。
分支结构,是根据不同的条件,执行不同的业务逻辑。
【1】条件分支结构:if 、 if - else 、if -else if-- else ifelse ifelse ifelse ifelse if-else
特别注意:只要是互斥类型判断,就不要使用多个独立的if…
if 条件分支一般在任何情况下都可以做条件判断使用。(范围和具体值都行)
【2】常量分支结构:switch case (等值判断)
switch(表达式)
{
case 值 1:
语句块 1;
break;
case 值 2:
语句块 2;
break;
...
default:
语句块 n;
break;
}
7、关于循环结构
【1】循环(for、foreach、while、do while)
for:循环次数固定,不仅是是获取循环内容,可能也会关注循环次序(1、2、3、4、5、….)
foreach:不关心循环次数,特别注重循环内容(也就是元素)、无条件执行。
whlie ():不关心循环次数,特别注重的是循环条件的满足,同时循环过程与循环条件没有任何关系。
forech( var 元素 in 集合)
{
对元素进行使用。
}
总结:foreach循环是遍历容器中的元素
while(循环条件)
{
//自定义的业务内容...
}
总结:根据条件是否满足,循环执行某些自定义业务。
while中的循环跳出:break、continue区别
【2】 break、continue和return
break:在循环中和分支结构中使用,表示跳出。
continue:一定是在循环中使用,本次循环没有结束,就开始下一个循环。
return:表示无条件跳出,通常是我们普通的方法中使用,表示后面的代码不执行。
如果return 后面有数据,表示这个方法执行完毕后,返回数据。
if (this.txtStudentName.Text.Trim().Length == 0)
{
MessageBox.Show("学生姓名不能为空!", "提示信息");
this.txtStudentName.Focus();
return;
}
if (this.txtCardNo.Text.Trim().Length == 0)
{
MessageBox.Show("考勤卡号不能为空!", "提示信息");
this.txtCardNo.Focus();
return;
}
8、字符串专题
【1】掌握常用的几种方法:
字符串比较方式(a==b a.Equals(b)) ==
在我们C#中可以比较《字符串》和《值类型》数据, Equals()
虚方法也是一样的但是以上两种方法不能比较对象,另外在Java中,==
是不能直接比较字符串。
【2】字符串长度的获取:
使用Length属性即可:字符串.Length
获取集合中元素的个数可以使用Count
属性,如果是数据库中,我们还会看到Len()
函数
C#开发之——获取字符串长度(4.2)_PGzxc的博客-CSDN博客_c# 字符串长度
【3】StringBuilder字符串高效处理
9.关于数组
【1】在什么情况下使用数组?固定元素个数的统一存储。
在我们一般开发中, 使用数组的时候很少了。特别的,上位机开发的可能用的多。 byte[]
【2】字符串分割和数组使用配合
分割后,都是放到数组中的。特别对于一些文本的数据处理要用。
10.其他的:
ref(不建议使用) out
private Add(ref int a ,int b)
{
}
作者:晨岩
本站所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明出处!