C#基础程序员
一、栈存地址和值类型,堆存对象数据。性能
二、var,编译器类型推断spa
三、不能用从变量中提取出来的值来初始化常量,若是须要这么作,应使用只读字段;.net
四、常量老是隐式静态的,const关键字:code
1)使用易读取名称,便于阅读;对象
2)便于程序(业务)逻辑变动,好比税率SalesTax=6%;内存
3)避免程序犯错,如别处赋值则编译器报错。ci
五、C#数据存储:值类型存储在堆栈(Stack)中,而引用类型存储在托管堆(Managed Heap)中。CLR会作内存管理,调用垃圾回收期实现内存回收。
六、C#有15个预约义类型,其中两个引用类型(string 和 object),13个是值类型。文档
1)C#中的int 声明的其实是.Net 结构System.Int32的一个实例,看起来很深奥,但其意义深远:这表示在语法上,能够把全部的基本数据类型当作支持某些方法的类。例如:int i=10;string s=i.ToString();字符串
2)C#的decimal类型不是基本类型,计算时使用该类型会有性能损失。28位(128位的高精度十进制数表示法)decimal d=12.30M;或者decimal d=12.30m.
3)C# bool=true 或false:若是试图用0表示false,非0表示true,就会报错。
4)Byte(无符号)、sbyte(有符号),标准8位类型,
5)字符类型:char 表示一个16位的Unicode字符
七、Object类: 是C#和.net的根类型:例如堆栈中的值类型对象经过object装箱到堆中.实现了一些基本方法,能够重写,如Equals()、GetHashCode(),GetType()和ToString().
八、C# string其实是.Net 类System.String,是个引用类型。但又会体现值类型的字符串通常和直观的字符串规则特色,是经过运算符重载实现的。如:string s1="a string"; string s2=s1;s1="Another string";结果:s1="Another string" s2="a string"
九、字符串:经过@字符消除转义字符“\”,$字符串插值功能
十、使用if语句的一个重要指导原则就是:
1)只有语句和if语句写在同一行时,才容许程序员不适用花括号。遵循之,程序员在添加第二个语句时不太可能不添加花括号。
2)比较好的习惯:都要加花括号,不管几行逻辑语句。(若是没有else。。。)
3)值比较== 常值置于前 if(0==j)
十一、Switch语句:能够包含一条default语句。任何两条case都不能相同,不然编译器报错:break可用
const string england="uk";
const string britain="uk";
switch(country)
{
case england:
case britain://编译会报错
language="English";
break;
}
十二、循环for, while ,do...while,foreach(不能改变集合中各项的值,不然不能编译,如改变应使用for循环),break、Continue 可用
但这样是能够的:
foreach (var item in resultList)
{
Apple a = item as Apple;
if (a != null)
{ a.Color = "Red"; }
}
1三、return
1四、枚举:是用户定义的整数类型,枚举实例是一组易于记忆的整数值。C#中,枚举的真正强大之处是它们在后台实例化为派生自基类System.Enum的结构。一旦代码编译好,枚举就成为基本类型,与int相似。
1)能够检索枚举的字符串表示:
public enum TimeOfDay
{
Morning = 0,
Afternoon =1,
Evening =2
}
TimeOfDay time=TimeOfDay.Evening ;TimeOfDay time2=(TimeOfDay)Enum.Parse(typeof(),TimeOfDay,"afternoon ",true);
1五、名称空间 namespace,能够嵌套,using,别名 using alias=NamespaceName;
1六、使用注释:源文件的内部注释:单行// ,多行/*...*/
1七、XML文档 根据特定注释自动建立XML格式的文档说明
1八、C#预处理器指令