1、C#在变量中有一个基本的区分,他把类级别声明的变量看成字段,而把在方法中声明的变量看成局部变量,所以:
class Program
{
int j = 0;
static void Main(string[] args)
{
int j = 20;//这里不会报错
}
}
2、this关键字,在静态方法/属性等中无效
3、值类型直接存贮其值,而引用类型存储对值的引用。值类型存储在堆栈(stack)中,而引用类型存储在托管堆(managed heap)中,
4、
关键字 |
占位(位) |
字节sizeof |
byte |
8 |
1 |
short |
16 |
2 |
int |
32 |
4 |
long |
64 |
8 |
float |
32 |
4 |
double |
64 |
8 |
decimal |
128 |
16 |
5、foreach (var item in items)
{//在foreach中item和items的值都不可以改变
}
for循环中,可以改变item的值,但是不能改变items的值
6、枚举:
枚举是用户定义的整数类型
枚举不可赋值,只能在初始化的时候定义
7、名称空间
namespace t1.t2 { }
等同于
namespace t1 {
namespace t2 { }
}
名称空间别名:using t = t1.t2;//t就是别名
名称空间修饰符:: 是啥意思
8、C#预处理指令
#define 和 #undef |
#define DEBUG //定义变量DEBUG #undef DEBUG //删除变量DEBUG |
#if、#elif、#else 、#endif |
#if DEBUG #elif #else #endif //以此标志结束 |
#warning 和 #error |
#warning 在错误列表中显示警告信息 #error 显示错误信息,编译不能成功 |
#region 和#endregion |
|
#line |
#line 164 "NewClass.cs" //改变编译器在警告和错误信息中显示的文件名和行号信息 #line default//把行号恢复为默认的行号 |
#pragma |
#pragma warning disable CS0219 //消除警告,CS0219是错误列表里警告的代码编号 var ss = ""; #pragma warning restore CS0219 |
9、string @string = "";//关键字前加@代表不是C#关键字,可以作为变量
10、