第三章
注释
- 单行注释:// 注释内容
- 多行注释:/… 注释内容…/
- 文档注释:/// 注释内容
应用程序的基本结构
#region
using System;
using System.Collections.Generic;
using System.Ling;
using System.Text;
using System.Threading.Tasks;
//引用类库
#endregion //折叠(隐藏)代码段,region和endregion 要同时存在。
namespace ConsoleApplication1 //namespace是命名空间
{
class Program //Program类
{
static void Main (String [] args) //Main函数,程序的开始
{
//Output text to the screen.
Console.WriteLine("这是我的第一个控制台应用程序");
//打印括号中的内容
Console.ReadKey();
//按任意键继续,告诉代码在结束前等待按键
}
}
}
变量
一个变量只不过是一个供程序操作的存储区的名字。在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。
整数类型
类型 | 允许的值 | 别名 |
---|---|---|
sbyte | -128~127的整数 | System.SByte |
byte | 0~255之间的整数 | System.Byte |
short | -32 768和32 767之间的整数 | System.Int16 |
ushort | 0和65 535之间的整数 | System.UInt16 |
int | -2 147 483 648 和 2 147 483 647 之间的整数 | System.Int32 |
uint | 0 和 4 294 967 295 之间的整数 | System.UInt32 |
long | -9 223 372 036 854 775 808 和 9 223 372 036 854 775 807之间的整数 | System.Int64 |
ulong | 0和18 446 744 073 709 551 615 之间的整数 | System.UInt64 |
浮点类型
类型 | 别名 | 允许的值 |
---|---|---|
float | System.Single | 单精度浮点式,如1.1 |
double | System.Double | 双精度浮点式,比单精度浮点式更加精确 |
decimal | System.Decimal | 具有更高的精度,用于财务和货币计算 |
文本和布尔类型
类型 | 别名 | 允许的值 |
---|---|---|
char | System.Char | 一个Unicode字符,存储0和65 535 之间的整数,如 ‘男’ |
bool | System.Boolean | 布尔值:true or false |
string | System.String | 一组字符 |
变量定义
格式: < C#数据类型> <标识符名称> ;
如:
int i, j, k;
char c, ch;
…
变量初始化
< 数据类型> <标识符名称> = value;
如:
int i = 3, f = 5;
补充:
接受来自用户的值
System 命名空间中的 Console 类提供了一个函数 ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中。
例如:
int num;
num = Convert.ToInt32(Console.ReadLine());
函数 Convert.ToInt32() 把用户输入的数据转换为 int 数据类型,因为 Console.ReadLine() 只接受字符串格式的数据。
表达式
表达式:是由数字、算符、数字分组符号(括号)、自由变量等以能求得数值的有意义排列方法所得的组合。
C# 运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,分类如下:
算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
…
算术运算符
运算符 | 描述 |
---|---|
+ | 把两个操作数相加 |
- | 从第一个操作数中减去第二个操作数 |
* | 把两个操作数相乘 |
/ | 分子除以分母 |
% | 取模运算符,整除后的余数 |
++ | 自增运算符,整数值增加 1 |
– | 自减运算符,整数值减少 1 |
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int a = 21;
int b = 10;
int c;
c = a + b;
Console.WriteLine("Line 1 - c 的值是 {0}", c);
c = a - b;
Console.WriteLine("Line 2 - c 的值是 {0}", c);
c = a * b;
Console.WriteLine("Line 3 - c 的值是 {0}", c);
c = a / b;
Console.WriteLine("Line 4 - c 的值是 {0}", c);
c = a % b;
Console.WriteLine("Line 5 - c 的值是 {0}", c);
c = ++a;
Console.WriteLine("Line 6 - c 的值是 {0}", c);
// 此时 a 的值为 22
// --a 先进行自减运算再赋值
c = --a;
Console.WriteLine("Line 7 - c 的值是 {0}", c);
Console.ReadLine();
}
}
}
关系运算符
由于表格打不了|我用1代替
运算符 | 描述 |
---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 |
using System;
class Program
{
static void Main(string[] args)
{
int a = 21;
int b = 10;
if (a == b)
{
Console.WriteLine("Line 1 - a 等于 b");
}
else
{
Console.WriteLine("Line 1 - a 不等于 b");
}
if (a < b)
{
Console.WriteLine("Line 2 - a 小于 b");
}
else
{
Console.WriteLine("Line 2 - a 不小于 b");
}
if (a > b)
{
Console.WriteLine("Line 3 - a 大于 b");
}
else
{
Console.WriteLine("Line 3 - a 不大于 b");
}
/* 改变 a 和 b 的值 */
a = 5;
b = 20;
if (a <= b)
{
Console.WriteLine("Line 4 - a 小于或等于 b");
}
if (b >= a)
{
Console.WriteLine("Line 5 - b 大于或等于 a");
}
}
}
逻辑运算符
运算符 | |
---|---|
&& | 逻辑与运算符。如果两个操作数都非零,则条件为真。 |
“11” | 逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 |
! | 逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 |
using System;
namespace OperatorsAppl
{
class Program
{
static void Main(string[] args)
{
bool a = true;
bool b = true;
if (a && b)
{
Console.WriteLine("Line 1 - 条件为真");
}
if (a || b)
{
Console.WriteLine("Line 2 - 条件为真");
}
/* 改变 a 和 b 的值 */
a = false;
b = true;
if (a && b)
{
Console.WriteLine("Line 3 - 条件为真");
}
else
{
Console.WriteLine("Line 3 - 条件不为真");
}
if (!(a && b))
{
Console.WriteLine("Line 4 - 条件为真");
}
Console.ReadLine();
}
}
}
赋值运算符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 |
<<= | 左移且赋值运算符 |
>>= | 右移且赋值运算符 |
&= | 按位与且赋值运算符 |
^= | 按位异或且赋值运算符 |
1= | 按位或且赋值运算符 |
using System;
namespace OperatorsAppl
{
class Program
{
static void Main(string[] args)
{
int a = 21;
int c;
c = a;
Console.WriteLine("Line 1 - = c 的值 = {0}", c);
c += a;
Console.WriteLine("Line 2 - += c 的值 = {0}", c);
c -= a;
Console.WriteLine("Line 3 - -= c 的值 = {0}", c);
c *= a;
Console.WriteLine("Line 4 - *= c 的值 = {0}", c);
c /= a;
Console.WriteLine("Line 5 - /= c 的值 = {0}", c);
c = 200;
c %= a;
Console.WriteLine("Line 6 - %= c 的值 = {0}", c);
c <<= 2;
Console.WriteLine("Line 7 - <<= c 的值 = {0}", c);
c >>= 2;
Console.WriteLine("Line 8 - >>= c 的值 = {0}", c);
c &= 2;
Console.WriteLine("Line 9 - &= c 的值 = {0}", c);
c ^= 2;
Console.WriteLine("Line 10 - ^= c 的值 = {0}", c);
c |= 2;
Console.WriteLine("Line 11 - |= c 的值 = {0}", c);
Console.ReadLine();
}
}
}
补充:
运算符 | 描述 |
---|---|
sizeof() | 返回数据类型的大小。 |
typeof() | 返回 class 的类型。 |
& | 返回变量的地址。 |
* | 变量的指针。 |
? | 条件表达式 |
is | 判断对象是否为某一类型。 |
as | 强制转换,即使转换失败也不会抛出异常。 |
C# 中的运算符优先级
运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。
例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。
类别 | 运算符 |
---|---|
后缀 | () [] -> . ++ - - |
一元 | + - ! ~ ++ - - (type)* & sizeof |
乘除 | * / % |
加减 | + - |
移位 | << >> |
关系 | < <= > >= |
相等 | == != |
位与 AND | & |
位异或XOR | ^ |
位或 OR | 1 |
逻辑与 AND | && |
逻辑或 OR | 11 |
条件 | ?: |
赋值 | = += -= *= /= %=>>= <<= &= ^= |
逗号 | , |