内容提要:
->1、Visual Studio开发工具
->2、命名空间
->3、代码规范
->4、流程控制
->5、三元表达式
->6、方法(返回值、参数)
->7、数据类型(int、数组、枚举、结构)
->8、控制台应用程序
->9、WinForm应用程序
->10、方法重载与重用
1、Visual Studio开发工具
(1)为解决方案新建一个项目:
(A)如果目前只有一个项目:文件-添加-新建项目
(B)如果有两个以上的项目:解决方案名称右键-添加-新建项目
(2)设定当前项目为启动项:解决方法-属性中设置
2、命名空间 同一个命名空间下,成员才可随时被访问。
->C#的命名空间是可以随意改变的,只要在同一个项目当中,不论程序文件放在哪里,都是通过命名空间实现逻辑划分的。
->在同一个项目中,同一个命名空间下,成员可随时被访问。
->在同一个项目中,不同的命名空间下,访问需要(1)using先导入命名空间,或访问时写全命名空间
->在不同的项目中,命名空间名称相同,也不能视作同一个命名空间,访问需要(1)添加对项目的引用,访问时带上各自的前缀,以示区别。
->在不同的项目中,命名空间也不相同,访问需要(1)添加对项目的引用(2)通过using 先导入命名空间,或在访问时写全命名空间。
小结:访问条件是同项目,同命名空间。项目不同需引用项目,命名空间不同需using导入或访问时写全命名空间名。
3、代码规范
(1)命名规范:
-> A、变量要有含义,不要用以下的方式,而是用如num1,num2;
-> B、命名方法:骆驼(camelCase)与帕斯卡(PascalCase)
局部变量:使用骆驼camelCase命名法,第一个单词小写,后面单词首字母大写。
类和方法:使用PascalCase,所有单词首字母大写
(2)注释:
-> 行注释: //注释该行
-> 行间注释: /* 注释一段文本,直到遇到
注释一段文本,直到遇到
*/
-> 文档注释: ///
///
/// 该注释会生成XML文档
///
///向方法传入的第一个参数
///向方法传入的第二个参数
///返回值
4、流程控制
-> 选择结构 if、if-else、if-else if switch-case
-> 循环结构While、do-while for、foreach
-> 跳转语句break、 continue、 goto(认为禁用)
(1)每一个逻辑都是使用这两个逻辑(选择、循环)进行混合实现。
跟计数变量有关的一般用for循环
跟数字无关或跟bool型值有关的一般用while循环
(2)switch-case语法
在case中存放用来比照的值,根据传进来的数据定位到相应选项要执行的代码块
每一个case后都需要一个break(多条case匹配一个执行代码的时候,可以省略break)
(3)语法熟练掌握:
for循环 先执行i=0的一次,然后i++,条件为真继续循环,条件为假,结束循环。
for (int i = 0; i < 5; i++) { }
break 跳过循环体的剩余部分直接退出结构体或循环体
continue 语句是跳过循环体的剩余部分而继续下一次循环,非循环体跳出往后执行
5、三元表达式 表达式1?表达式2:表达式3
表达式1为true则返回表达式2,否则返回表达式3
int num1 =53,num2 = 27
int num3 = num1 > num2 ? num1: num2;
Console.WriteLine("最大的数是:{0}", num3);
6、方法 方法就是函数,是重用的一种机制
(1)没有参数与返回值的方法,当做一种功能方法来用
[public] [static] void 方法名() {//方法体}
->方法定义在哪儿?(类的里面,其他方法的外面)
->方法中定义的变量为局部变量,只在该方法中(一对花括号中)起作用
->由Main方法直接使用的方法,需要加static,表示静态方法(不加static需要new实例才能调用)
(2)带参数无返回值的方法:
[public] [static] void 方法名(参数类型1 参数1, 参数类型2 参数2, ... )
{
//方法体
}
(3)带参数有返回值的方法
[public] [static] 返回类型 方法名(参数类型1 参数1, 参数类型2 参数2, ... )
{
//方法体
return 返回的数据
}
7、数据类型
C# 是强类型语言,因此每个变量和对象都必须具有声明的数据类型。
C# 数据类型可描述为:
值类型(存储值)。这些类型包括基元数值类型、枚举和结构,还包括这几种类型对应的可空类型(如booleean? Married = null)。所有值类型的变量在声明时都有默认值。
引用类型(存储对实际数据的引用)。这些类型包括类、接口、数组和委托。
用户定义类型(如 class 或 interface)。
匿名类型,它由一组封装在无名称引用类型中的公共属性组成。
类变量的赋值:用该类型的其他变量指向的实例赋值,或创建一个新实例赋值。
(通常情况,特别是用户新自定义的一个类,是没有现成的实例可用来赋值的,一般声明变量的同时new一个实例赋给它。)
7.1、Int32 转换数字的方法
int num = Convert.ToInt32(字符串);
-> 如果字符串转换成功,则num中为对应的数字
-> 如果字符串转换不成功就会报异常
-> 处理异常可以使用try-catch代码
try
{
// 放可能出现异常放的代码
}
catch
{
// 如果出现异常就执行这一段代码
}
注意:凡是定义一个变量,最好给一个默认值。
7.2、数组 一次性定义一定数量的相同类型的变量
类型名[] 变量名 = new 类型名[数量];
int[] nums = new int[10000];
int[] nums = new int[3] {1,2,3}; //{1,2,3}为使用初始化器赋值
-> 初始化的时候一定要数据一致
-> 如果中括号中显示的是10,而后面花括号中只有3个变量,则报错
int[] nums = new int[] {4,5,6};
int[] nums = {4,5,6};
-> 这种初始化,只有在定义变量的时候才能进行
7.3、枚举 枚举是一个类型,元素在本质上是int值,元素的值可强制转化为int类型
-> 语法:
(1)定义在类的里面,方法的外面
(2)enum 枚举类名 {元素名1[=int值1],元素名2,元素名3[=int值3],…}
(3)使用 枚举名.元素名 来获取一个枚举值
-> 特点:
(1)默认情况下,枚举类型的第一个元素的值为0(int型)
(2)一个元素如果没有赋值,该元素的值是在前一个元素的值上加1。
(3)输出枚举元素:用ToString()方法获得元素名,用强制转换为int获取元素的值
(4)也可以将一个int值强制转化为枚举类型来获取元素名称。
->示例:以下代码执行后打印 “south121202east”
class Program
{
enum Direction
{
east=11,south,west=1201,north
}
static void Main(string[] args)
{
Direction dir = Direction.south;
Console.Write(dir);
Console.Write((int)dir);
Console.Write((int)Direction.north);
Console.Write((Direction)11);
Console.ReadKey();
}
}
7.4、结构 结构是一个类型,在自定义中用得少,在系统定义中用得多
示例:
(1)定义结构 颜色
struct MyColor
{
public int red; //->成员需要使用Public修饰才允许被访问
public int green; //->结构中不能有实例字段初始值
public const int number = 10; //->结构中只有常量才允许有初始值
public MyColor(int r,int g,) //结构中有构造方法,给每个字段赋初值
{
red = r;
green = g;
}
//public MyColor() //->不能显示的声明无参构造方法
public void Function() //->结构中也可以有方法
{
Console.WriteLine("这是结构中的方法!");
}
}
(2)使用结构
使用结构前,必须先声明实例并给其全部字段赋初值(通过构造方法或直接赋值)
class Program
{
static void Main(string[] args)
{
//MyColor m = new MyColor(99,100);
MyColor m ;
m.red = 200;
m.green = 300;
Console.WriteLine(m.red);
m.Function();
Console.ReadKey();
}
}
8、控制台应用程序 Console.Writline() 方法
-> 输出0个参数 换行 Console.Writline()
-> 输出1个参数
-> 输出文本Console.Writline("这是一段文本")
-> 变量的值Console.Writline(num)
-> 输出多个参数,第一个参数必须是字符串(参数中可包含占位符),其后的每一个参数都是为占位符填值的。
->Console.Writline("num ={0}.str = {1}",num,str)
9.1、WinForm应用程序(CS)
-> 怎么创建WinForm程序
-> Winform程序会一直监听我们的动作,但是不会做出任何响应
-> 根据我们的动作,注册方法(事件)
-> 一旦注册以后,我们只要是做这个动作,方法就会被调用一次
-> 创建窗体、拖控件、设计界面与功能
-> 根据各个控件设定其属性添加事件响应方法
-> 测试编译运行
9.2、Form类 窗体就是一个类,要显示一个窗体:
A、new一个窗体,赋给一个变量fm
B、调用fm.show()方法显示“非模态”窗体,窗体之间没有关系。
非模态对话框不能处理TAB键、快捷键等按键事件,不能在非模态对话框中通过按TAB键切换各控件之间的焦点(Focus)。
C、调用fm.showDialog()方法显示“模态”窗体,关闭新窗体才能访问旧窗体。
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
this.Text = e.X + "," + e.Y;
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("点我了!");
Form f2 = new Form2();
f2.Show();
Form f3 = new Form2();
f3.ShowDialog();
}
D、窗体的StartPosition属性,值是枚举类型
构造方法中代码:this.StartPosition = FormStartPosition.Center;
this.Location = new Point(1023,0); 可以做窗体飘动效果(或闪屏效果)
E、窗体的属性FormBorderStyle设置为None后,窗台将不能移动。 可手动添加移动、最大化、最小化事件。
10.1、方法的重载(重要)
方法的重载指的是同一个类中的同名方法,是为了实现相似的功能,而使用统一的方法处理不同类型的数据。
重载必须满足以下三点:
1)、方法的名称必须相同。
2)、方法的参数必须不同,这里的不同分三种情况:
a、参数个数不同,类型不限;
b、参数个数相同,参数类型不同;
c、参数个数和类型都相同,参数顺序不同;
3、方法的返回类型和修饰符可以相同,也可以不同。
判断方法重载是否合理:
-> 去掉方法名前的修饰符 返回类型
-> 去掉方法体
-> 去掉参数,留下参数类型
-> 合理的重载就是保证留下来的代码不会重合
10.2、方法的重用
将一个方法封装起来,在需要的地方调用。
典型的是通过类库将方法封装成.dll程序集,任何项目只要引用这个dll文件后,就可以调用这个方法,从而实现重用。