前言

在这里讲点话吧,由于C#和java,cpp那样都是基于C语言的,所以那些啥数学运算啊、for循环啊、while循环啊、数组那些我就不打算写博客里了,要看的话我这里直接拉链接了:

C# 文档 - 入门、教程、参考。 | Microsoft Learn

啊对了,这里有用到,这玩意我就不说了,之后详细学习的时候如果C#有明显不一样的用法我会特意写出来:

方法

这个简单,和java很像,我就简单带过去了

简单学习了下,我收回前面的话,还是有一定的区别的。至于为啥,我先从定义开始讲。

定义

方法么,由于我自己讲容易讲不明白,我这里就调用了微软官方的定义了(源链接:方法 - C# | Microsoft Learn):

方法是包含一系列语句的代码块。 程序通过调用该方法并指定任何所需的方法参数使语句得以执行。 在 C# 中,每个执行的指令均在方法的上下文中执行。

该方法 Main 是每个 C# 应用程序的入口点,在启动程序时由公共语言运行时 (CLR) 调用。 在使用 顶级语句的应用程序中, Main 该方法由编译器生成,并包含所有顶级语句。

讲个题外话,我还是非常推荐入C#的人去读一下微软官方的手册的,我这里主要就是把话说更明白点而已。

实例

好吧,我承认Visual Studio2022的代码补全是真的猛,写实例代码写着写着把我想讲的都写完了。

class Program
{
    static void Main(string[] args)
    {
        a();
        a_value("a number");
        int b = a_num(10);
        Console.WriteLine($"b = {b}");
        void a_value(String value) //局部方法
        {
            Console.WriteLine($"This is {value}");
        }

        //类的使用
        Person person = new Person(); //创建类的实例
        person.Name = "Alice";
        person.Age = 30;
        person.Introduce(); //调用实例方法
        
    }
    static void a() //静态方法
    {
        Console.WriteLine("This is a!");
    }
    static int a_num(int num) //带参数和返回值的静态方法
    {
        return num + 42;
    }
    class Person //类方法
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public void Introduce() //实例方法
        {
            Console.WriteLine($"My name is {Name}, and I am {Age} years old.");
        }
    }
}

这里是结果:

额好吧,我承认,这其实写成这样容易降低可读性,一般是这样的结构:

其中Mains算是主方法,Person算是类方法。

这里是Mains的代码:

using Second;
class Mains
{
    static void Main(string[] args)
    {
        a();
        a_value("a number");
        int b = a_num(10);
        Console.WriteLine($"b = {b}");
        void a_value(String value) //局部方法
        {
            Console.WriteLine($"This is {value}");
        }

        //类的使用
        Person person = new Person(); //创建类的实例
        person.Name = "Alice";
        person.Age = 30;
        person.Introduce(); //调用实例方法
        
    }
    static void a() //静态方法
    {
        Console.WriteLine("This is a!");
    }
    static int a_num(int num) //带参数和返回值的静态方法
    {
        return num + 42;
    }
}

这里是Person的代码:

namespace Second
{
    class Person //类方法
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public void Introduce() //实例方法
        {
            Console.WriteLine($"My name is {Name}, and I am {Age} years old.");
        }
    }
}

当然了,结果是一样的:

这里就简单用java做演示吧(这里做个折叠,以防过于冗长):

以防某些人看不懂,这里用java演示

结构:

Mains代码:

public class Mains {
    public static void main(String[] args) {
        //上类似C#里的Main,由于这里不允许在Main函数里出现void函数,我就没办法复刻了
        a();
        a_value("a number");
        int b = a_num(10);
        System.out.println(b);
        //下就是引用了
        Person person = new Person();
        person.setName("Alice");
        person.setAge(30);
        person.Introduce();
    }
    static void a_value(String value) {
        System.out.printf("This is %s\n", value);
    }
    static void a(){
        System.out.println("This is a!");
    }
    static int a_num(int num){
        return num+42;
    }
}

Person代码:

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public void Introduce(){
        System.out.printf("My name is %s,and I am %s years old\n",name,age);
    }
}

ref

C#时学到的,java没有py用的global,所以没办法用这些语言解释,这玩意就是能够让你改方法里输入的参数的。

这边不太好解释,我就用代码写一下方便你们理解:

class Program
{
    static void Main(string[] args)
    {
        int RefTest(int val,ref int val0)
        {
            val0--;
            return val+10;
        }
        int a = 1;int b = 1; //原参数
        Console.WriteLine($"a={a},b={b}"); //原参数输出
        Console.WriteLine("-------");
        int c = RefTest(a,ref b);
        Console.WriteLine($"re:a={a},b={b},c={c}");
    }
}

输出的内容为:

看来目前学了很多,我就简单写个计算器自己理解(这里就不用java来解释了,累):

实例(计算器)

这里可能有点石山,不过至少能用,这里是代码:

一共分俩个文件,一个是Program(主文件),一个是Calucate(计算部分):

Program部分:

using Exercise1;
class Program
{
    static void Main(string[] args)
    {
        calculate calculate = new calculate();
        while (true)
        {
            Console.WriteLine("输入算数题(仅支持加减乘除),按回车键结束输入:");
            string input = Console.ReadLine();
            if (input == "")
            {
                break;
            }
            else
            {
                //加运算
                if (input.Contains('+'))
                {
                    string[] numbers = input.Split('+');
                    double num1 = Convert.ToDouble(numbers[0]);
                    double num2 = Convert.ToDouble(numbers[1]);
                    Console.WriteLine(calculate.add(num1, num2));
                }
                //减运算
                else if (input.Contains('-'))
                {
                    string[] numbers = input.Split('-');
                    double num1 = Convert.ToDouble(numbers[0]);
                    double num2 = Convert.ToDouble(numbers[1]);
                    Console.WriteLine(calculate.sub(num1, num2));
                }
                //乘运算
                else if (input.Contains('*'))
                {
                    string[] numbers = input.Split('*');
                    double num1 = Convert.ToDouble(numbers[0]);
                    double num2 = Convert.ToDouble(numbers[1]);
                    Console.WriteLine(calculate.mul(num1, num2));
                }
                //除运算
                else if (input.Contains('/'))
                {
                    string[] numbers = input.Split('/');
                    double num1 = Convert.ToDouble(numbers[0]);
                    double num2 = Convert.ToDouble(numbers[1]);
                    Console.WriteLine(calculate.div(num1, num2));
                }
                //不支持的运算符
                else
                {
                    Console.WriteLine("不支持的运算符,请重新输入。");
                }
            }
        }
    }
}

Calucate部分(加减乘除部分):

namespace Exercise1
{
    internal class calculate
    {
    public static double add(double num1, double num2)
        {
            return num1 + num2;
        }
    public static double sub(double num1, double num2)
        {
            return num1 - num2;
        }
    public static double mul(double num1, double num2)
        {
            return num1 * num2;
        }
    public static double div(double num1, double num2)
        {
            return num1 / num2;
        }
    }
}

差不多了

这个是屑