《C#高级编程》第二章学习笔记

mac2022-06-30  101

核心C#

变量

初始化 int i=10

int类型,开辟4个字节内存空间,根据变量名找到此块内存的地址,里面存数字10。

作用域 每一个{ }代码块为一个作用域,一般花括号里的只能在内部使用,不同的花括号内用相同的变量没问题,但最好不要,代码不容易理解。很多循环时变量变更,必须在循环外定义,在循环内赋值就好了。

常量 用关键字const声明

int const level=2

一般项目内不得不写具体值,需要用常量替代,不能直接写成硬代码。

数据类型

值类型和引用类型区别

概念上:值类型直接存储值,引用类型存储值得引用(内存地址) 存储位置:值类型存在堆栈(stack)中,引用类型存在托管堆(managed heap)中。关于堆栈和托管堆的区别,请戳别家大神的深入理解 c#堆栈和托管堆 对于引用类型,赋值后原来的值也会跟着改变的原理如下: 定义一个引用类型的类Vector,其包含一个int类型的成员变量value

object class Vector { private int age; public int Age{get;set;} } class Test { static void Main() { Vector x,y; x=new Vector(); x.Age=18; y=x; WriteLine(y.Age); y.Age=25; WriteLine(x.Age); } }

输出分别为18,25。因为同一个引用地址Vector ,只new了一次,所以会相互修改。

基本数据类型 基本C#的类型和.NET类型是相对应的,写的时候好像是用哪个都行,因为都会引用system命名空间。

程序流控制

条件控制 if和switch

循环 for,一般循环次数固定;while,循环到条件不满足;do…while,至少执行一次;foreach,遍历,迭代集合中的每一项,不能改变集合项的值。

跳转语句 goto, 不怎么用;break, switch中跳出或者跳出循环执行接下来的语句;continue,跳过此次循环,执行下次循环;return,跳出循环,将控制权交给方法的调用者。

枚举

定义的一系列整数值,但是可以起便于理解的变量名,继承system.enum类。

class test { public enum TimeOfDay { Morning=0, Afternoon=1, Evening=2 } static void Main() { WriteLine(TimeOfDay.Morning);//0 WriteGreeting(TimeOfDay.Morning); } private void WriteGreeting(TimeOfDay timeOfDay) { switch(timeOfDay) case timeOfDay.Morning: WriteLine("Good Moring"); break; case timeOfDay.Afternoon: WriteLine("Good Afternoon"); break; case timeOfDay.Evening: WriteLine("Good Evening"); break; default: break; } }

既可以检索int值也能检索出字符串,需要实例化。

TimeOfDay time= TimeOfDay.Evening; WriteLine(time.ToString();// Evening
最新回复(0)