内容提要: ->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文件后,就可以调用这个方法,从而实现重用。