小白c#教程
小白c#教程
ytkz简单的认识C
namespace DataTypeApplication
{
class study
{
public int add(int a, int b)
{ int result;
result = a + b;
return result;
}
}
class Program
{
static void Main(string[] args)
{
study a = new study();
Console.WriteLine("Size of int: {0}",a.add(1,2));
Console.ReadLine();
}
}
}
1. 先看代码的整体结构
这段代码可以分成两部分:
namespace DataTypeApplication(命名空间,类似“文件夹”)class study(一个“工具类”,里面装了方法)class Program(程序的“入口类”,包含启动代码)
2. 逐行解释代码
第1行:namespace DataTypeApplication
命名空间就像一个“文件夹”,用来把相关的代码(类、方法等)装在一起,避免不同项目中出现同名的类导致冲突。
比如:你有一个“数学工具”文件夹(DataTypeApplication),里面放了一个“学习类”(study),专门装计算相关的方法。
第4-8行:class study 类
类是C#中“对象的模板”,可以理解为一个“工具箱”,里面装了各种“工具”(方法)。
这里的 study 类里有一个 add 方法(加法工具):
public int add(int a, int b) // 方法定义
{
int result; // 声明一个变量存结果
result = a + b; // 计算a和b的和
return result; // 返回结果
}
public:表示这个方法是“公开的”,可以从类的外面调用(类似工具箱里的工具是“开放的”,任何人都能用)。int(返回类型):表示这个方法执行完后会“返回”一个整数(比如1+2的结果是3,就是int类型)。(int a, int b)(参数):方法需要“输入”两个整数(a和b),比如调用时传入1和2。
第10-16行:class Program 类
Program 类是C#程序的“起点”,程序运行时会从这里开始执行。里面的 Main 方法是程序的“入口”(必须有的!)。
第13-16行:static void Main(string[] args)
Main 方法是程序的“启动按钮”,代码从这里开始跑:
static void Main(string[] args)
{
study a = new study(); // 创建一个study类的“实例”(对象)
Console.WriteLine("Size of int: {0}", a.add(1, 2)); // 调用add方法,输出结果
Console.ReadLine(); // 让窗口保持打开(否则一闪而过)
}
3. 关键细节解释
study a = new study();
这行代码的意思是:创建一个 study 类的“对象”(相当于根据“工具箱”的设计图,造出一个具体的工具箱)。
study是类名(工具箱的设计图)。a是对象的“名字”(你可以自己取,比如calculator)。new关键字是“造对象”的命令(相当于“按设计图生产一个工具箱”)。
a.add(1, 2)
调用 a 对象的 add 方法,传入参数1和2,计算1+2的结果(3),并返回这个结果。
Console.WriteLine(...)
这是“向控制台输出内容”的命令。
"Size of int: {0}"是一个“模板字符串”,{0}是“占位符”,会被后面的a.add(1, 2)的结果(3)替换。- 最终输出的内容是:
Size of int: 3(虽然这里的文字“Size of int”不太准确,实际是加法结果,但不影响运行)。
Console.ReadLine();
这行代码的作用是“让控制台窗口保持打开”。如果不写这行,程序执行完会立刻关闭,你看不到输出结果。
4. 整个程序的运行流程
- 双击运行程序 → 系统找到
Program类的Main方法,开始执行。 Main方法里创建了一个study对象(a)。- 调用
a.add(1, 2),计算1+2=3。 - 把结果3填入
Console.WriteLine的模板字符串,输出到控制台:Size of int: 3。 - 执行
Console.ReadLine(),等待你按回车键,窗口才会关闭。
5. 新手友好的C#基础概念总结
- 类(Class):像一个“工具箱”或“模板”,里面装方法(功能)。比如
study类是“数学工具箱”,add是里面的“加法工具”。 - 对象(Object):根据类“生产”出来的具体实例。比如
study a = new study();就是生产了一个“数学工具箱”。 - 方法(Method):类里的“功能”,比如
add方法的功能是计算两数之和。 - 命名空间(Namespace):组织代码的“文件夹”,避免重名冲突。
给study类增加一个方法
namespace DataTypeApplication
{
class study
{
public int add(int a, int b)
{ int result;
result = a + b;
return result;
}
public (int A, int B) swap(int a, int b)
{ int result1, result2;
result1 = a;
result2 = b;
return (result2, result1);
}
}
class Program
{
static void Main(string[] args)
{
study a = new study();
Console.WriteLine("Size of int: {0}",a.add(1,2));
var swappedValues = a.swap(1, 22);
Console.WriteLine("swap: {0},{1}",swappedValues.A,swappedValues.B);
Console.ReadLine();
}
}
}
增加的方式 是交换数值。
一、两个代码的核心区别
第一个代码只有 add 方法(计算两数之和),第二个代码在 study 类中新增了一个 swap 方法,并在 Main 方法中调用了它。我们重点看新增的部分。
二、新增代码逐行解释
1. swap 方法的定义
public (int A, int B) swap(int a, int b)
{
int result1, result2;
result1 = a; // 把a的值存到result1(比如a=1,result1=1)
result2 = b; // 把b的值存到result2(比如b=22,result2=22)
return (result2, result1); // 返回交换后的两个值(result2=22,result1=1 → 相当于交换了)
}
关键点解释:
- 返回类型
(int A, int B):这是C#的元组(Tuple)语法,表示这个方法会返回“两个整数”。int A和int B是元组的“元素名”(可以自己取名字,比如swappedFirst和swappedSecond),让返回值更易读。- 元组允许方法一次返回多个值(不用再通过“输出参数”或其他复杂方式)。
2. Main 方法中调用 swap
var swappedValues = a.swap(1, 22);
Console.WriteLine("swap: {0},{1}", swappedValues.A, swappedValues.B);
关键点解释:
var关键字:这是一个“自动类型推断”的关键字。编译器会根据a.swap(1, 22)的返回值(这里是元组(int A, int B)),自动推断swappedValues的类型是(int A, int B),不用手动写类型名(比如tuple<int, int>),代码更简洁。- 接收返回值:
swap方法返回了一个元组,swappedValues就是这个元组的“实例”。 - 访问元组元素:通过
swappedValues.A和swappedValues.B可以分别获取元组的第一个和第二个元素的值(对应交换后的结果)。
三、新增代码的功能总结
第二个代码的核心新增功能是:
在 study 类中添加了一个 swap 方法,它能接收两个整数,返回它们交换后的结果(比如传入1和22,返回22和1)。
然后在 Main 方法中调用这个 swap 方法,接收返回的元组,并输出交换后的两个值。
四、关键C#知识点(新手必看)
1. 元组(Tuple):返回多个值的“容器”
C# 中,普通方法只能返回一个值(比如 add 返回一个 int)。但有时候需要返回多个值(比如交换两个数,需要同时返回交换后的两个数),这时候可以用元组。
元组就像一个“小盒子”,可以装多个值,还能给每个值起名字(比如 A 和 B),让代码更易读。
2. 值类型参数的“副本”特性
注意:swap 方法虽然返回了交换后的值,但不会修改传入的原始变量。比如:
int x = 1, y = 22;
a.swap(x, y); // 调用swap,但x和y的值还是1和22(因为方法参数是原始值的“副本”)
这是因为 int 是“值类型”,方法接收的是原始值的“复印件”(副本),修改副本不影响原始值。这也是为什么 swap 方法需要返回交换后的值,而不是直接修改输入参数的原因。
3. var 关键字:自动推断类型
var swappedValues = ... 中的 var 是“自动类型推断”关键字。编译器会自动根据右边的表达式(a.swap(1, 22) 返回的元组)推断 swappedValues 的类型是 (int A, int B)。
这样写更简洁,尤其是当类型名称很长时(比如元组、泛型类型),var 能减少重复代码。
五、运行效果演示
假设运行第二个代码:
a.add(1, 2)会计算1+2=3,输出Size of int: 3(虽然文字不太准确,但结果是对的)。a.swap(1, 22)会返回元组(22, 1),然后swappedValues.A是22,swappedValues.B是1,输出swap: 22,1。


