一、选择题
2、“闪电”图标
3、using命名空间
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式,using 关键字表明程序使用的是给定命名空间中的名称,使用 using 命名空间指令,这样在使用的时候就不用在前面加上命名空间名称。该指令告诉编译器随后的代码使用了指定命名空间中的名称。
//没有使用using
//first_space;second_space我们都没有using;其格式为:命名空间.类
using System;
namespace first_space
{
class namespace_cl
{
public void func()
{
Console.WriteLine("Inside first_space");
}
}
}
namespace second_space
{
class namespace_cl
{
public void func()
{
Console.WriteLine("Inside second_space");
}
}
}
class TestClass
{
static void Main(string[] args)
{
first_space.namespace_cl fc = new first_space.namespace_cl();
second_space.namespace_cl sc = new second_space.namespace_cl();
fc.func();
sc.func();
Console.ReadKey();
}
}
//使用using
//就可以省略命名空间的“名字”了,直接调用里面的类
using System;
using first_space;
using second_space;
namespace first_space
{
class abc
{
public void func()
{
Console.WriteLine("Inside first_space");
}
}
}
namespace second_space
{
class efg
{
public void func()
{
Console.WriteLine("Inside second_space");
}
}
}
class TestClass
{
static void Main(string[] args)
{
abc fc = new abc();
efg sc = new efg();
fc.func();
sc.func();
Console.ReadKey();
}
}
//注意:因为我们using System,所以我们可以只写:
Console.WriteLine ("Hello there");
//我们可以写完全限定名称,如下:
System.Console.WriteLine("Hello there");
综上,我们使用using 命名空间后,可以简写一部分内容
5、Main()方法
需要大写
6、数据类型
值类型直接存储其值,而引用类型存储对其值的引用【类似于指针】
值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。
引用类型(reference type):string 和 class、interface、delegate、object、数组统称为引用类型。当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。当使用 new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。
(1)值类型变量的操作只影响存储在变量中的值类型实例,就是我们一般的操作
//写一个伪代码
int a=10;
int b=a;
b=5;
最终值为:a=10,b=5;
(2)引用类型变量 。就是和指针差不多【类比,但不是】,看如下的操作
我们发现当更改SC2.num的值时,SC1.num也跟着改变了
介绍一下一些数据类型。
decimal(高精度浮点数)、struct(结构体)、byte(无符号的8位整数)
8、int字节
int 4个字节
9、unit关键字
C#中, uint是一个关键字,用于声明一个变量,该变量可以存储值的整数类型(无符号整数)
10、string
C#中的string是System.String的别名,继承与System.Object。
所以string就是一个引用类型。引用类型一般是类。
12、运算符
^ 异或
C#没有乘方运算符,想要乘方。Math.pow()
& 与
字符连接,直接使用'+'即可
14、非零即真的问题
C#语言的布尔类型变量,其赋值只能是true和false,所以非0即true并不存在于C#中
15、数组
声明数组 int[] x; //声明一个int[]类型的变量(无法指定大小)
定义数组:
数据类型[] 数组名=new 数据类型[数组长度];
数据类型[] 数组名=new 数据类型[数组长度]{元素1,元素2…};
数据类型[] 数组名=new 数据类型[]{元素1,元素2…};
数据类型[] 数组名={元素1,元素2…};
搞清楚什么是声明;什么是定义
16、Length
array.Length是数组的长度,只读的。
17、二维数组
二维数组声明:数据类型[,] 数组名 int[,] array;
二维数组定义:
- 数据类型[,] 数组名 = new 数据类型[第一维长度,第二维长度]
int[,] arr= new int[50,3];
- 数据类型[,] 数组名 = new 数据类型[,]{数组值};
int[,] arr= new int[,]{{1,0,1},{3,0,5}};
- 数据类型[,] 数组名 = {数组值};
int[,] arr= {{1,0,1},{3,0,5}};
所以不合法,行列都要写清楚
18、数组初始化
动态初始化
- 数据类型[] 数组名=new 数据类型[数组长度];
- 此时数组中每一个元素都是为默认值
- int的默认值0
- float的默认值0
- bool的默认值false
- char的默认值‘\0’,表示空字符
- string的默认值""
- 此时数组中每一个元素都是为默认值
21、switch
switch(控制表达式){
case 常量:
语句...;
break;
case 常量:
语句...;
break;
default:
语句;
}
//控制表达式,其结果只能是整型或字符型、字符串型
//case 后的常量必须不同
//常量
常数 或 常数计算表达式(编译时是知道结果的)
所以case后为变量是错的
switch变量可以是string,只要符合最终控制表达式结果即可
26、类
类里的字段和方法如下
27、this
this代表当前实例,用this.显式调用一个类的方法和成员
namespace Demo
{
public class Test
{
private string scope = "全局变量";
public string getResult()
{
string scope = "局部变量";
// 在这里,this代表Test的实例,所以this.scope指向的是全局变量,scope所访问的是局部变量
return this.scope + "-" + scope;
}
}
class Program
{
static void Main(string[] args)
{
try
{
Test test = new Test();
Console.WriteLine(test.getResult());
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
Console.ReadLine();
}
}
}
28、构造方法
作用:构造方法用来创建对象,并且在构造方法中对对象进行初始化
返回:构造函数是一种特殊的函数,负责创建该类的实例对象。一般用new + 构造函数。可以认为构造函数的返回值类型就是该类本身。就是没有返回的意思【不是void】
特殊要求:
- 没有返回值,不需要写类型,连void都不要写。
- 构造方法的方法名,与类名要相同
//一个类里的构造方法
class Person
{
//构造方法
public Person(string name)
{
this.Name = name;
this.Age = age;
this.Sex = sex;
this.Chinese = chinese;
this.Math = math;
this.English = english;
}
//字段
private string Name;
}
//使用构造方法
class Program
{
static void Main(string[] args)
{
//创建小明对象
Person p1 = new Person("小明");
}
}
29、访问父类成员(属性、方法、构造方法):base
构造方法调用
方法调用
// 父类
public class Father
{
public String name = "小头爸爸";
public void TellName()
{
Console.WriteLine("My name is {0}.",name);
}
}
// 子类
public class Son:Father
{
public new String name = "大头儿子";
public new void TellName()
{
Console.Write("Father Told: ");
base.TellName();
Console.WriteLine("My Father's name is {0}",base.name);
Console.WriteLine("My name is {0}.", name);
}
}
30、object
所有类的最终基类:Object
当一个类没有指明父类时,则相当于继承于object类。也就是说,object类是最有类的最终父类。
所有类的最终基类:Object