学习C#笔记(刚刚学的一小部分)

本文介绍了C#中的数据类型,包括枚举类型、结构类型及数组类型的使用方法,并讲解了流程控制语句如switch、foreach的应用场景及注意事项。


+数据类型/变量/表达式
enum Range:long{Max=23232323,Min=255L};
struct属于简单类型,不能继承.
--值类型包括枚举类型和结构类型.
--引用类型包括类类型/接口类型/数组类型/代理类型/预定义的object和string类型.
----数组:
using System;
class Array
{
 public static void Main()
 {
  //一维数组,声明的同时初始化
  int[] I={5,10,15};
  Console.WriteLine("I[]={0},{1},{2}",I[0],I[1],I[2]);
  //以一维数组作为元素的一维数组,new运算符来实例化
  bool[][] B=new bool[2][];
  B[0]=new bool[2]{true,false};
  B[1]=new bool[1]{true};
  Console.WriteLine("B[0][1]={0}",B[0][1]);
  //二维数组,初始化
  byte[,] Y=new byte[2,2]{{0,1},{2,3}};
  Console.WriteLine("Y[,0]={0},{1}",Y[0,0],Y[1,0]);
  //一维字符串数组
  string[] S=new string[3];
  S[0]="Zhang";
  S[1]="Zhu";
  Console.WriteLine("{0},{1}",S[0],S[1]);
 }
}
----装箱和拆箱
装箱:将一个值类型隐式的转换为object类型(或者任何由值类型实现的接口类型)
 int i=10;
 object obj=i;//装箱转换,值->引用
 int j=(int)obj;//拆箱转换,引用->值
---特殊运算符
as
is
new
sizeof
typeof
stackalloc
checked溢出检查
unchecked

+流程控制
switch语句:
---若无goto case 标号;和goto default;语句每个case分支后面要有break;否则编译报错.
 Console.WriteLine("Size:1=small 2=medium 3=large");
 Console.Write("Please enter your selection:");
 string s=Console.ReadLine();
 switch(s)
 {
  case "0":goto case "1";//goto case 标号;
  case "1":Console.WriteLine("small size.");break;
  case "2":Console.WriteLine("medium size.");break;
  case "3":Console.WriteLine("large size.");break;
  case "4":goto default;//goto default;
  default:Console.WriteLine("invalid selection.");break;
 }

---break,continue,goto,return,throw
---foreach
(1)  int odd=0,even=0;
  int[] arr=new int[]{0,1,2,3,4,5,6,12,34,56,44,68,98,77};
  foreach(int i in arr)
  {
   if(i%2==0)even++;
   else odd++;
  }
  Console.WriteLine("odd={0},even={1}",odd,even);
(2)
  Hashtable ziphash=new Hashtable();
  ziphash.Add("100001","Beijing");
  ziphash.Add("200001","Shanghai");
  ziphash.Add("300001","Guangzhou");
  ziphash.Add("710001","Xian");
  ziphash.Add("000001","Dalian");
  ziphash.Add("000002","Qingdao");
  Console.WriteLine("Zip code/tCity");
  Console.WriteLine("-------/t/t-------");
  foreach(string zip in ziphash.Keys)
  {
   Console.WriteLine(zip+"/t/t"+ziphash[zip]);
  }
(3)
using System;
public class MyCollection
{
 int[] items;
 public MyCollection()
 {
  items=new int[5]{12,44,33,2,50};
 }
 public MyEnumerator GetEnumerator()
 {
  return new MyEnumerator(this);
 }
 public class MyEnumerator
 {
  int nIndex;
  MyCollection collection;
  public MyEnumerator(MyCollection coll)
  {
   collection=coll;
   nIndex=-1;
  }
  public bool MoveNext()
  {
   nIndex++;
   return(nIndex<collection.items.GetLength(0));
  }
  public int Current //属性
  {get{return(collection.items[nIndex]);}}
 }
}

public class MainClass
{
 public static void Main()
 {
  MyCollection col=new MyCollection();
  Console.WriteLine("Values in col:");
  foreach(int i in col){
   Console.Write("{0}/t",i);
  }
 }
}

---预处理指令
C#编译器没有单独的预处理器,
#if  #elif  #else  #endif
#define #undef
#warning
#error
#line
#region  #endregion
---附加属性和条件
[A][B]  [B][A]  [A,B]  [B,A]是等价的.
#define DEBUG
#undef DEBUG
using System;
using System.Diagnostics;
public class Trace
{
 [Conditional("DEBUG")]public static void Msg(string msg)
 {
  Console.WriteLine(msg);
 }
}
class Test
{
 static void A()
 {
  Trace.Msg("Now in A()");
 }
 public static void Main()
 {
  Trace.Msg("Now in Main.");
  A();
  Console.WriteLine("Done");
 }
}
---异常处理
C#中,所有的异常必须是一个从System.Exception派生的类类型的实例.
所有异常的共有属性:Message和InnerException
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值