对我学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);

原文地址:https://www.cnblogs.com/zuozuo/p/2150130.html