zoukankan      html  css  js  c++  java
  • 对我学C#时的一次小回忆[一:语法篇]

    使用C#编程已有好长时间了,回想起从前学习时的一些片段及走过的道路,有时也是息虚不已。说真的弯路没少走,而且还是山路十八弯,想学习一门技术付出的坚艰实在是太大了,接触的每一本教材总是或多或少的出现错误,这对于一个学习者来说相当的致命,因为很可能因为一个错误的引导而使自己走向了错误的道路。

    万丈高楼平地起。

    学习任何一门语言都是先从语法开始学起,至少能用符合语言规则的代码先让程序跑起来,有个大体的印象,建立一个小小的兴趣才会慢慢深入。万一第一个程序就卡死一万次,估计任谁也会失去兴趣。

    我看过好几本书《C#高级编程》第二、三、四、六版。我都翻看了。

    第一章就是对.net的一个概述。

    C#编译分为两个阶段:

    1.把源代码编译为Microsoft中间语言(IL)。

    2.CLR把IL编译为平台专用的代码。

    然后紧接着便进入了C#的[语法篇]

    程序的相关要求无非就是:

    1.以分号为结尾。

    2.字母区分大小写。

    3.变量声明需要用字母或_开头。不能用关键字当变量名。

    4.C#是类C型语言,{}。

    编写一个程序最常做的就是声明变量,变量赋值。

    声明变量:

    数据类型  变量标识名;

    同时还了解到了‘常量’,即:const。

    ★常量必须在声明时初始化,指定了其值后,就不能再修改了。

    同时也看到了C#预定义的数据类型。

    并且开篇就给讲了第一个最简单的小程序。学会了两个IO/控制台输入与输出的命令。Console.WriteLine();和Console.ReadLine();

    有了这些我就可以编写程序了,虽然它很简单。

    using System;
    
    namespace MySpaceProject{
    	public class Hello{
    		public static void Main(string[] args){
    			Console.WriteLine("This is my first program!");
    			Console.ReadKey();
    		}
    	}
    }
    

    老是声明变量,输出变量一点意思都没有。咱学程序是干嘛的,除了解决生活中的问题,不就是也想编出强大的程序吗?难道我学来学去只能活在DOS命令行下。

    接着继续往下学,又学到了流控制语句和循环语句。

    流控制:

    if(true){

      

    }else if(true){

    }else{

    }

    public static void Tif(){
    			int x = 10;
    		Tag:
    			if(x>9 && x<=10){
    				Console.WriteLine("x>9");
    				x+=10;
    				goto Tag;
    			}else if(x>10 && x<21){
    				Console.WriteLine("x in 10 and 20.");
    				x+=100;
    				goto Tag;
    			}else if(x>110 && x<=120){
    				Console.WriteLine("x < 120.");
    				x -= 115;
    				goto Tag;
    			}else{
    				Console.WriteLine("x is {0}.",x);
    			}
    		}
    

    switch(v){

      case 1:

        Console.WriteLine(1);

        break;

      case 2:

        Console.WriteLine(2);

        break;

      default:

        Console.WriteLine("not 1 or not 2");

        break;

    }

    循环语句:for/while/do...while/foreach

    for(int i=0;i<x.Length;i++){  //可读,可写

    }

    while(true){

      break;

    }

    do{

      break;

    }while(true);

    foreach(int i in ArrayOfInt){  //只读for循环

      Console.WriteLine(i);

    }

    跳转语句:

    Tag:Console.WriteLine("goto in here!");

    break;continue;goto Tag;return;

    枚举:

    说到枚举这个很有意思,当初一直觉得这个类型有点多余,用整数也是一样的,后来用得次数多了,才发现了它的魅力所在。

    枚举:是用户定义的整数类型。枚举就相当于你给整体起了一个别名。

    public enum ClubType{

      club,vipclub

    }

    虽然我们可以:

    int x = 1;

    if(x == 0){

      Console.WriteLine("普通会员");

    }else if(x == 1){

      Console.WriteLine("VIP会员");

    }

    但是怕就怕,x变量声明的过早,期间又发生了一些运算,导至结果发生了变化,万一经过了计算,x=5;这时判断会员是什么类型的,又该如何显示呢?虽然这种现象很少发生,但很少并不意味着不会发生。

    用:

    ClubType ct = ClubType.club;

    switch(ct){

      case ClubType.club:

        Console.WriteLine("普通会员");

        break;

      case ClubType.vipclub:

        Console.WriteLine("VIP会员");

        break;

      default:

        throw new Exception("会员类型错!");

        break;

    }

    这样一来,杜绝错误的机率就增大了许多。这就是枚举的妙用。

    public static void Tswitch()
    		{
    			ClubType ct = ClubType.club;	//默认为普通会员,因为这级别的会员没有特殊权利
    			Console.Write("请出示您的会员编号:");
    			string str = Console.ReadLine();
    			int v_count = 0;
    			int a_count = 0;
    			int k_count = 0;
    			while(str != "exit"){
    				int keys; 
    				if(Int32.TryParse(str,out keys)){
    					switch(keys){
    						case 20:
    							v_count++;
    							ct = ClubType.vipclub;
    							break;
    						case 30:
    							a_count++;
    							ct = ClubType.allclub;
    							break;
    						case 40:
    							k_count++;
    							ct = ClubType.kingclub;
    							break;
    						default:
    							ct = ClubType.club;
    							break;
    					}
    				}
    				switch(ct){
    					case ClubType.club:
    						Console.WriteLine("\r\n您好,欢迎来到会员中心。请待在会员大厅,不要试图去任何地方。");
    						break;
    					case ClubType.vipclub:
    						Console.WriteLine("\r\n您是我们的VIP会员,这是您第{0}次登录。您除了会员大厅还可以进入自己的包间,其他的房间请不要擅自进入,谢谢合作。",v_count);
    						break;
    					case ClubType.allclub:
    						Console.WriteLine("\r\n您是我们的[特权]会员,这是您第{0}次登录。您可以到达任何地方。",a_count);
    						break;
    					case ClubType.kingclub:
    						Console.WriteLine("\r\n尊贵的会员你好,这是您第{0}次登录。您可以到达任何地方并吩咐任何人为您提供服务。",k_count);
    						break;
    				}
    				Console.Write("\r\n请出示您的会员编号:");
    				str = Console.ReadLine();
    			}
    			v_count = 0;
    			a_count = 0;
    			k_count = 0;
    		}
    

    字符串转换为枚举:

    MyEnum me = (MyEnum)Enum.Parse(typeof(MyEnum),"string",true);

  • 相关阅读:
    金蝶VB插件开发,单据不满足条件,拒绝保存
    继承(子类构造执行的过程)
    Javascript基础(一)
    异常处理(一)
    File I/O(三)
    图片轮播
    java中的foreach循环
    File I/O(一)
    集合框架(三)
    集合框架(二)
  • 原文地址:https://www.cnblogs.com/zuozuo/p/2150130.html
Copyright © 2011-2022 走看看