C#基础
本文为学习笔记,如有出入请指出
C#简介
略
语法概述
C#由C/C++发展而来,语法大多和其前辈相同,这里只提需要注意的或是叫法不同的地方。
标识符需由字母或下划线开头的)字符。
通常约定:参数、局部变量和私有字段有小写字母开头,其他在标识符一大写字母开头。
对于编译器保留的关键字,可以在前面加上‘@’作为区分,但实际上‘@’并不时标识符的一部分。
一些关键字是上下文相关的,因此可以不加‘@’区分节能通过编译,但应避免上下文代码混淆。
分隔符(;{})、运算符(+-*\%=)、注释(\、\**\)、类型转换(显、隐式)等与C++用法相同。
数值类型
基本数据类型
| C#类型 | 系统类型 | 后缀 | 容量 | 数值范围 |
|---|---|---|---|---|
| Sbyte | SByte | 8位 | -2^7 ~ 2^7 - 1 | |
| short | Int16 | 16位 | -2^15 ~ 2^15 - 1 | |
| int | Int32 | 32位 | -2^31 ~ 2^31 - 1 | |
| long | Int64 | L | 64位 | -2^63 ~ 2^63 - 1 |
| byte | Byte | 8位 | 0 ~ 2^8 - 1 | |
| ushort | UInt16 | 16位 | 0 ~ 2^16 - 1 | |
| uin | UInt32 | U | 32位 | 0 ~ 2^32 - 1 |
| ulong | UInt64 | UL | 64位 | 0 ~ 2^64 - 1 |
| float | Single | F | 32位 | ±(~10^-45 至 10^38) |
| double | Double | D | 64位 | ±(~10^-324 至 10^308) |
| decimal | Decimal | M | 128位 | ±(~10^-28 至 10^28) |
其中decimal与doubl 与 float两个用于科学计算的浮点数不同, decimal用于10位精度以上的数值计算或金融计算,存储方式和前者的以2为基数的存储方式不同,它以10为基数。decimal保证了有效位数内的精确度。但由于它不是处理器原生支持的数据类型,因此操作大约会比double慢十倍。
在double与float中有一些特殊值:
double.NaN:“Not a Number”,和任何数值不相等(和其他NaN也不相等);0/0或用无穷相减也会返回该常量;
double.PositiveInfinity:正无穷,比任何数值都大;正数除以0为无穷大;
double.NegativeInfinity:负无穷,比任何数值都小;负数除以0为无穷小;
-0.0:不知道干啥的
简单的流输入输出
Console.Write("Hello {0}! \n", NameString); //标准流输出
Console.WriteLine("Hello {0}!", NameString); //和上一个比自动句尾添加换行符
char c = Console.Read(); //读取一个字符,返回int
Console.ReadKey(); //目前只知道可以用来暂停,回车继续(吃一个字符)
/*“一个 ConsoleKeyInfo 对象,描述 ConsoleKey 常数和对应于按下的控制台键的 Unicode 字符(如果存在这样的字符)。 ConsoleKeyInfo 对象还在 ConsoleModifiers 值的按位组合中描述是否在按下控制台键的同时按下了一个或多个 Shift、Alt 和 Ctrl 修改键。”via MSDN*/
//ReadKey 虽将字符回显,但按下就已经输入,故无法修改
string s = Console.ReadLine(); //字符串输入,换行结束输入
字符串
对于‘\’等字符,通常在C\C++中做法是'\'表示一个斜线。
C#中提供了另外一种方法,在字符串前面加上‘@’,表示该字符串为逐字符字符串,即:
string s = @"C:\User\xxx.ooo";
数组的定义及初始化如下:
char[] a = new char[5]; //一维数组
int[,] b = new int[3, 9]; //多维数组
int[,] c = new int[3, 4]
{
{1, 2, 3, 4};
{4, 5, 6, 7};
{5, 6, 7, 8}
};
函数
参数数组,关键字params
static void Foobar(int int_val,
params char vals)
{
...
}
引用调用参数,关键字ref、out。ref与C++中引用大致相同。ref修饰的参数必须在函数中被使用,比喻在调用前得到初始化。out用来给参数赋值。out可以修饰未赋值的参数,或说out修饰的参数应看做未赋值,但out在函数中必须被赋值。
static void Main (string[] args)
{
int a = 10;
int b;
Foobar (ref a, out b); //注意使用的时候也要写ref, out
}
static void Foobar (ref int a, out int b)
{
a ++;
b = a;
return;
}
浙公网安备 33010602011771号