前妻(C#)基础语法
这一世的第一个C#程序
众所周知C的文件后缀是.c C++的文件后缀是.cpp 这些我为什么知道我也不知道 因为这是众所周知的 而我最亲爱的前妻 它的文件后缀是.CS (哦莫,多么优美又动人的后缀)
文件如下
using System;
namespace dear
{
public class myfirstclass
{
static void Main()
{
Console.WriteLine("你好 前妻");
Console.ReadLine();
return;
}
}
}
下一步我们要把它编译为exe程序,用csc命令 然后出现了滑铁卢
“csc不是内部或外部命令,也不是可运行的程序,或批处理文件”
事实上为了迎回前妻电脑上已经装了最新版的vs2022了然后怎么会出现这种情况的呢,令人难过。原来是我们少配置了系统环境变量。就和所有的系统环境变量一样我们需要找到自己电脑上NET Framework安装的路径 把这个路径粘贴到path的最下方 我的路径是这个 大家可能大差不差
C:\Windows\Microsoft.NET\Framework\v4.0.30319
让我们执行优美的 csc 前妻.cs
编译出了一个前妻.exe文件 双击运行 。哦莫,这就是我们曾经相爱的证明
变量和常量
在C#中声明变量使用下述语法
datatype(类型) identifier(变量名);
C#强调安全性,简单来说C#编辑器需要用某个初始化值对变量进行初始化,之后才能在操作中引用该变量。大多数现代编辑器把没有初始化标记为警告,但C#编辑器把它当做错误来看待。(可以防止我们无意中从其他程序遗留下的内存中获取垃圾值)
c#确保变量在使用前进行了初始化的方法
1.变量是类或结构中的字段,如果没有显示格式化,创建这些变量时,其默认值是0
2.方法的局部变量必须在代码中初始化,之后才能在语句中使用它们的值。此时,初始化不是在声明变量时进行的,但编辑器会通过方法检查所有可能的路径。如果检测到局部变量在初始化之前就使用了它的值,就会产生错误。
在c#中实例化一个引用对象需要使用new关键字
xxx=new xxxyinyong()
在C#中声明常量使用如下语法
常量是指值再使用过程中不会发生变化的变量。在声明和初始化变量时加上const 就可以把该变量指定为一个常量
const datatype(类型) identifier(变量名)=1(值);
常量具有如下的特点
1.常量必须在声明时初始化。指定了其值后,就不能再改写了。
2.常量的值必须能再编译时用于计算。因此不能从一个变量提取值去作为常量
3.常量是静态的。但是不允许在常量声明中包含修饰符static
前妻更为严格的数据类型
与其他语言相比,C#对其可用的类型以及定义有更严格的描述
值类型和引用类型
值类型直接存储值,而引用类型存储对值的引用。
这两种上已经类型存储在内存的不同地方:值类型存储在堆栈中,而引用类型存储在托管堆上。
C#有15个预定义类型,其中13个是值类型,两个是引用类型(string,object)
1.整型 (8个)
名称 | CTS类型 | 说明 | 范围 |
---|---|---|---|
sbyte | SByte | 8位有符号整数 | -128~127 |
short | Int16 | 16位有符号整数 | -32768~32767 |
int | Int32 | 32位有符号整数 | -2147483648~2147483647 |
long | Int64 | 64位有符号整数 | -9223373036854775808~922372036854775807 |
byte | Byte | 8位无符号整数 | 0~255 |
ushort | Uint16 | 16位无符号整数 | 0~65535 |
unit | Uint32 | 32位无符号整数 | 0~4294967295 |
ulomg | Uint64 | 64位无符号整数 | 0~18446 |
2.浮点型(2个)
名称 | CTS类型 | 说明 | 位数 |
---|---|---|---|
float | Single | 32位单精度浮点数 | 7 |
double | Double | 64位双精度浮点数 | 15/16 |
3.decimal类型 更高精度的浮点数 (1个)
名称 | CTS类型 | 说明 | 位数 |
---|---|---|---|
decimal | Decimal | 128位高精度十进制表示法 | 28 |
4.bool类型 (1个)
名称 | CTS类型 | 说明 | 位数 |
---|---|---|---|
bool | Boolean | 表示true或false | NA |
5.字符类型(为了保存单个字符) (1个)
名称 | CTS类型 | 值 |
---|---|---|
char | Char | 16位的unicode字符 |
6.预定义的引用类型 (2个)
名称 | CTS类型 | 说明 |
---|---|---|
object | Object | 根类型,CTS中其他的类型都是从派生而来的包括值类型 |
string | String | Uniacode字符串 |
在C#中 object 类型就是最终的父类型,所有内置和用户自定义的类型都是从他派生而来的。
尽管C#中string赋值形式是一个值类型的赋值,但string实际上是一个引用类型。string对象被分配在堆上,而不是栈上。因此当把一个字符串变量赋予另一个字符串时,会得到堆内存中同一个字符串的两个引用。但是strinf与引用类型的常见行为有一些区别。例如,字符串是不可改变的,修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串不发生任何变化。
–未完待续–