一:入口函数
c#程序编译都会有一个Main的入口函数,标识的是程序的入口点,具体长样式代码如下:
static void Main(string[] args)
{
}
二:变量的初始化
int a = 0, b = 1;
MyClass myclass = new MyClass();
C#实例化一个引用对象需要使用new关键字,使用new关键字把改引用指向存储在堆上的一个对象!
三:类型推断
var name = "lixiongwen";
var age = 24;
var isRabbt = false;
Type nameType = name.GetType();
Type ageType = age.GetType();
Type isrRabbtType = isRabbt.GetType();
Console.WriteLine("nameType" + nameType.ToString());
Console.WriteLine("ageType" + ageType.ToString());
Console.WriteLine("isrRabbtType" + isrRabbtType.ToString());
上面这段代码会输出:
这里可以看到编译器可以帮助我们推断变量的类型,但是是有原则的:
1.变量必须初始化,否则,编译器就没有推断变量类型的依据
2.初始化器不能为空
3.初始化器必须放在表达式中
4.不能把初始化器设置为一个对象,除非在初始化器中创建了一个新对象
四:变量的作用域
1.只要类在某个作用域内,其字段(成员变量)也在该作用域内
2.局部变量存在于表示声明该变量的块语句或者方法结束的又花括号之前的作用域内
3.在for,while或者类似语句中声明的局部变量存在于该循环体内
五:预定义数据类型
o值类型
o引用类型
概念上看:值类型直接存储值,而引用类型存储对值的引用
两种类型存储在内存的不同地方:
值类型存储在栈中,而引用类型存储在堆上,注意区分某类型是值类型还是引用类型,因为存储位置的不同会有不同的影响。
int i = 20;
int j = i;
Console.WriteLine("i=" + i.ToString() + "j=" + j.ToString());
上面的代码会输出i=20;j=20
Myclass i = new Myclass();
i.myold = 20;
Myclass j = i;
Console.WriteLine("j="+ j.myold);
j.myold = 30;
Console.WriteLine("i="+i.myold);
这里输出的是20,30,可见引用类型只要改一个都会变,这里因为i和j引用的同一个对象,声明这两个变量只保存了一个引用,而不会实例化给定类型的对象,要创建对象,必须使用new关键字
C#里面的值类型:int,double,bool,char,struct,enum
引用类型:string, object, class
六:流控制
1.条件语句
bool isaboy = true;
if (isaboy)
{
Console.WriteLine("yes,i am a boy!");
}
else
{
Console.WriteLine("no,i am a gril!");
}
输出yes,i am a boy!
2.switch语句
int m = 0;
switch (m)
{
case 0:
Console.WriteLine(0);
break;
case 2:
Console.WriteLine(2);
break;
default:
Console.WriteLine("no");
break;
}
输出0;
3.循环
for循环:
for(int i = 0; i < 2; i++)
{
Console.WriteLine(i);
}
输出0,1
whlie循环:
bool isdoon = true;
while (isdoon)
{
Console.WriteLine("yes,isplay!");
}
do..while循环至少执行一次
foreach循环:
List<int> a = new List<int>();
a.Add(1);
a.Add(2);
foreach (int m in a)
{
Console.WriteLine(m);
}
输出1,2
跳转语句:goto
break:跳出当前循环或者条件语句,只能跳出一层
continue:结束本次循环,执行下次
return:跳出方法,或者返回某个类型,没有的话返回void
七:枚举
enum Name
{
daxiong,
huanle
}
八:名称空间
关键字:namespace
九:using语句
引用名称空间