#创作计划# #游戏计划#之—C#入门3
2025-10-24 22:41:02
发布于:上海
本篇章我们将会用神秘的Markdow格式,来“辅助”大家学习。
我敢保证,本文是ACGO上,甚至全网讲的最详细的文章之一,有问题直接私信我!
上完#游戏计划#系类后,你就可以做出一款生动好玩的游戏了,或许你在初中,就可以获得人生中第一桶金。
目录
怎么办啊,进度有点慢啊?
那今天就讲点思维题。
我们把代码块的cpp换成了csharp。
目录
- 
习题讲解
- 
基础思维题
- 
显示转换与异常捕捉
- 
转义字符
- 
习题
就这些吧,其他的什么if,switch,运算符啊,和C++无区别,也就是说,下一篇就会是基础篇了。
1.习题讲解
题目1:自我介绍
编写一个程序,在控制台中输出你的姓名、年龄和所在城市。要求使用变量来存储这些信息。
答案如下:
namespace ACGO教导
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string Myname="ND";
            byte Myage=114514;
            string Mycity="火星";
            
            
        }
    }
}
题目2:数字计算
声明两个整数变量 a 和 b,分别赋值为 10 和 5。计算并输出它们的和、差、积、商。
答案如下:
namespace ACGO教导
{
    internal class Program
    {
        static void Main(string[] args)
        {
            byte a=10,b=5;
            Console.WriteLine(a+b);
            Console.WriteLine(a-b);
            Console.WriteLine(a*b);
            Console.WriteLine(a/b);
        }
    }
}
拓展题:编写一个程序,要求用户输入自己的名字,然后程序输出:“你好,[名字]!欢迎学习C#!”
答案如下:
namespace ACGO教导
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string Yourname=Console.ReadLine();
            Console.Write("你好,"+Yourname+"!欢迎学习C#!");
        }
    }
}
2.基础思维题
1.怎样种四棵树使得任意两棵树之间的距离相等?(请拿出你的草稿纸)
答案如下:

2.有两根不均匀分布的绳子,烧完的时间都是1小时。你能用什么方法来确定一段15分钟的时间?
答案如下:
同时点燃第一根绳子的两端,并且同时点燃第二根绳子的一端。
第一根绳子两端一起烧,会在30分钟时烧完(因为燃烧时间与两端点燃的速度相加,总时间减半)。
当第一根绳子烧完时(此时已过30分钟),立即点燃第二根绳子的另一端。
第二根绳子之前已烧了30分钟,剩下部分两端同时烧,会在15分钟烧完。
从第一根绳子烧完的时刻开始,到第二根绳子烧完,正好是15分钟。

3.显示转换与异常捕捉
有显示必有隐式。
当然,隐式做游戏用不上的哈。
3.1  强制转换运算符 (类型)
double d=12.34;
int i=(int)d;
object obj="hello";//object是所有类型的基类,它是整个类型体系的根。
string str=(string)obj;
Animal animal=new Dog();
Dog dog=(Dog)animal;
3.2 Convert 类
double d=12.34;
int i=Convert.ToInt32(d);
string str="123";
int num=Convert.ToInt32(str);
bool b=Convert.ToBoolean("true");
3.3 Parse 方法
string str="123";
int i=int.Parse(str);
double d=double.Parse("12.34");
bool b=bool.Parse("true");
3.4 TryParse 方法
string str="123abc";
if(int.TryParse(str,out int result))
{
    Console.WriteLine(result);
}
else
{
    Console.WriteLine("转换失败");
}
3.5 as 运算符
object obj="hello";
string str=obj as string;
object obj2=123;
string str2=obj2 as string;
3.6 类型检查 + 转换
object obj="hello";
if(obj is string str)
{
    Console.WriteLine(str);
}
if(obj is string)
{
    string str=(string)obj;
    Console.WriteLine(str);
}
3.7 自定义显式转换(不推荐!!!!!)
这个怎么说呢,我自己都会忘,有时可能还要问一下我们Unity群里的C#dl。
public class Temperature
{
    public double Celsius{get;set;}
    
    public static explicit operator Fahrenheit(Temperature temp)
    {
        return new Fahrenheit{Value=temp.Celsius*9/5+32};
    }
}
Temperature celsius=new Temperature{Celsius=100};
Fahrenheit fahr=(Fahrenheit)celsius;
总结:
| 方法 | 适用场景 | 安全性 | 异常处理 | 
|---|---|---|---|
| (类型) | 基本类型转换 | 低 | 可能抛出异常 | 
| Convert | 复杂转换,字符串转换 | 中 | 可能抛出异常 | 
| Parse | 字符串转其他类型 | 低 | 格式错误时抛异常 | 
| TryParse | 字符串转其他类型 | 高 | 返回布尔值,不抛异常 | 
| as | 引用类型转换 | 高 | 失败返回 null | 
| is + 转换 | 任何类型转换 | 最高 | 先检查后转换 | 
异常捕捉这个东西very重要。
异常捕捉是一种处理程序运行时错误的技术,让程序在遇到问题时不会崩溃,而是能够优雅地处理错误并继续运行或安全退出。
格式为:
try{
}
catch{
}
下面这个非必要,我们后续讨论时不讨论finally
finally{
}
意思大约为:
if(try中的代码出现了错误)
输出catch中的内容
else 
输出try中的内容
例如:
try{
string str=Console.ReadLine();
int i=int.Parse(str);
Console.Write(i);
}
catch{
Console.Write("数据不合法");
}
当然,错误有很多种。
我们怎么分别处理这些错误呢?
看看这个代码(这个代码写的比前一个完善):
try
{
Console.Write("请输入一个整数:"); 
string str = Console.ReadLine();
int i = int.Parse(str);
Console.WriteLine("你输入的数字是:" + i);  
}
catch (FormatException)  // 具体异常类型
{
Console.WriteLine("错误:请输入有效的整数!");
}
catch (OverflowException)  // 处理数字太大
{
 Console.WriteLine("错误:数字太大或太小!");
}
我给大家准备了一份错误类型的表格:
| 异常类型 | 说明 | 常见场景 | 
|---|---|---|
| FormatException | 格式错误 | int.Parse("abc") | 
| DivideByZeroException | 除零错误 | int x=10/0 | 
| NullReferenceException | 空引用 | string s=null; s.Length | 
| IndexOutOfRangeException | 索引越界 | int[] arr=new int[3]; arr[5]=1 | 
| FileNotFoundException | 文件未找到 | File.ReadAllText("不存在的文件.txt") | 
4.转义字符
转义字符我们常用的就这些:
| 转义序列 | 字符名称 | 
|---|---|
| \n | 换行 | 
| \t | 制表符 | 
| \" | 双引号 | 
| \' | 单引号 | 
| \\ | 反斜杠 | 
| 然后还有一个知识点,在转义字符前面加上"@",就可以取消转义字符。 | |
| 即: | 
string str="\\下一个\'";
等价于
string str=@"\下一个'";
还有一种情况:
string s1="他说:\"你好\"";        // 他说:"你好"
string s2=@"他说:""你好""";      // 他说:"你好"
// 在逐字字符串中,双引号要用两个双引号表示
5.习题
用户信息验证系统
题目要求:
编写一个程序,要求用户输入以下信息:
姓名(字符串)
年龄(整数)
邮箱(字符串)
积分(小数)
程序需要:
对年龄和积分进行数据类型验证和异常处理
使用转义字符格式化输出
对不合法的输入给出明确的错误提示
输出示例:
=== 用户信息验证系统 ===
请输入姓名:张三
请输入年龄:25
请输入邮箱:zhangsan@email.com
请输入积分:95.5
验证成功!
用户信息:
姓名:	张三
年龄:	25
邮箱:	zhangsan@email.com
积分:	95.5
好啦好啦,上完了,恭喜大家学会了C#入门。
然后记得完成练习题哦!有问题随时私信我~ 🚀
全部评论 6
- ddd - 6天前 来自 浙江 0
- d - 1周前 来自 吉林 0
- d - 1周前 来自 吉林 0
- d - 1周前 来自 吉林 0
- 强 - 1周前 来自 吉林 0
- 更得这么快??? - 1周前 来自 吉林 0- wc,还真有人学啊 - 1周前 来自 上海 0
- 那可不,入门的只是我滚了2次 - 1周前 来自 上海 0
- 太强了 - 1周前 来自 吉林 0
 






















有帮助,赞一个