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、