小白c#教程

简单的认识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)(参数):方法需要“输入”两个整数(ab),比如调用时传入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. 整个程序的运行流程

  1. 双击运行程序 → 系统找到 Program 类的 Main 方法,开始执行。
  2. Main 方法里创建了一个 study 对象(a)。
  3. 调用 a.add(1, 2),计算1+2=3。
  4. 把结果3填入 Console.WriteLine 的模板字符串,输出到控制台:Size of int: 3
  5. 执行 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 Aint B 是元组的“元素名”(可以自己取名字,比如 swappedFirstswappedSecond),让返回值更易读。
    • 元组允许方法一次返回多个值(不用再通过“输出参数”或其他复杂方式)。

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.AswappedValues.B 可以分别获取元组的第一个和第二个元素的值(对应交换后的结果)。

三、新增代码的功能总结

第二个代码的核心新增功能是:
study 类中添加了一个 swap 方法,它能接收两个整数,返回它们交换后的结果(比如传入1和22,返回22和1)。

然后在 Main 方法中调用这个 swap 方法,接收返回的元组,并输出交换后的两个值。

四、关键C#知识点(新手必看)

1. 元组(Tuple):返回多个值的“容器”

C# 中,普通方法只能返回一个值(比如 add 返回一个 int)。但有时候需要返回多个值(比如交换两个数,需要同时返回交换后的两个数),这时候可以用元组
元组就像一个“小盒子”,可以装多个值,还能给每个值起名字(比如 AB),让代码更易读。

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 能减少重复代码。

五、运行效果演示

假设运行第二个代码:

  1. a.add(1, 2) 会计算 1+2=3,输出 Size of int: 3(虽然文字不太准确,但结果是对的)。
  2. a.swap(1, 22) 会返回元组 (22, 1),然后 swappedValues.A 是22,swappedValues.B 是1,输出 swap: 22,1