怎么说呢,正如前文所述,有个写一大堆代码的,我想你也应该想知道这些是什么玩意吧,以下便是其内容。
结构
首先,我们先去把之前的HelloWorld拿上:
举个例子
using System; //命名空间,类似于import
class Program //类,类似于java里的class类
{
static void Main(string[] args) //函数,用Main运行
{
Console.WriteLine("Hello, World!"); //里面的语句
}
}看懂没,没看懂看我折叠的部分:
给那些看不懂的
Using 就是命名空间,这里就相当于import(这里的using System其实可以不用导,但为了演示就写上了)。
class 就是类,类是什么我不多说(自己查去)。
void 就是函数,主函数是Main,Main就是用来输出的,其他就是方法的嵌套函数(经典的面向对象)。
函数里的就是语句了,这里的语句跟java一样,是需要;结尾的
按理来说,C#就是这样的,最起码老版本都是这样的。
但是为啥我之前可以写一行呢,这里我就引入微软官方文档了(原链接:概述 - A tour of C# | Microsoft Learn):
从 C# 14 和 .NET 10 开始,可以创建 基于文件的应用,从而简化 C# 程序的生成和运行。 使用 dotnet run 命令运行包含在单个 *.cs 文件中的程序。 例如,如果以下代码存储在名为 hello-world.cs 的文件中,可以通过键入 dotnet run hello-world.cs 来运行它。
至此,结构方面我讲完了,接下来就是变量,虽然除了js、Kotlin那些用的var万能变量其他基本上都大差不差,不可能有人的第一门计算机语言是js那些吧。
那这里就有人要说了,python的变量种类不也少的可怜吗?拜托,py的变量类型还是有很多种的,你真以为py的整型就只有int(此int还是自带高精,写cpp的哭死)、布尔就只有bool那些真以为py的变量种类很少吧。
js那个甚至就一个var走遍天下你怎么解释呢。剩下不详细解释了,不然容易脱离其本质。
当然,根据上面的话,我其实没必要认真学/解释,但由于某些变量类型的不同(在细节方面),我还是得要简单记忆/学习/记录/解释下。
变量
定义
变量,顾名思义,就是存储数据的玩意。算了,懒的详细解释了,直接引用了(原链接:变量(计算机名词)_百度百科)
变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。
变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的。
在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。
应该没人发现我前面讲的内容有点小问题吧,算了,反正懒的对着书解释了
好了,接下来我就不写变量命名规范了(这是基础,我没义务写这货,我不是纯教人,我也得要写给我自己的),我直接把变量具体类型端上来力(喜)
内置类型(C#)
这里就是内置类型(为与之后讲的类型做区别,这里写内置类型了),内置类型分很多种,我就一个一个记/讲了。
值类型
值类型就是直接分配的值,剩下不解释,自己看去(重点记标粗放大的就行):
引用类型
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。主要分三个(内置的):
对象(Object)类型
Object类型就是C#的终极类型(不过这个出来也代表你就要遇到头疼的玩意了),不具体解释,因为目前用不上
动态(Dynamic)类型
类似var类型,但我不喜欢用,原因跟我不喜欢js的变量一样,万能变量会降低可读性。
字符串(String)类型
字符串就是存储我们打出来的内容的,具体不解释
指针类型
怎么还有啊(恼)
这边懒的解释,我就不写了,你知道是这格式就行:type* identifier;
类型转化
本来要记录好可以放松的,都忘记有这茬了,临时写上(
我这里我就不用那啥乱七八糟的解释了,我直接代码例子献上,以便于理解:
using System;
class Program
{
static void Main(string[] args)
{
int a = 10;
double a_0= 20.5;
double b = (double)a; //显式
float c = a; //隐式
int d = Convert.ToInt32(b); //使用Convert类进行转换
int d_0= (int)a_0; //强制类型转换,截断小数部分
String e = d.ToString(); //转换为字符串
String f = b.ToString("F2"); //格式化为字符串,保留两位小数
int g = int.Parse(e); //从字符串解析为整数
Console.WriteLine($"a: {a}, a_0: {a_0}, b: {b}, c: {c}, d: {d}, d_0: {d_0}, e: {e}, f: {f}, g: {g}");
}
}以防有人说怎么没有结果,这里献上结果:

顺带,补充一点,如果变量里加const的话,就不能变了,变了会报错
我代码注释里讲的很明白了,我就不具体解释了主要懒