前言
在这里讲点话吧,由于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;
}
}
}
差不多了