C#基础札记

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

原文地址:https://www.cnblogs.com/Extreme/p/3060785.html