![](https://img-blog.csdnimg.cn/851c5d17560040769cf9544a71b4995b.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C#笔记
文章平均质量分 57
C#学习笔记
傻Q爱
游戏开发爱好者
展开
-
C#面向对象的概念
C#是一种面向对象的编程语言,面向对象编程的核心是将程序中的数据和操作封装在一个对象中。下面是一些面向对象的概念:类(Class):类是用来描述一类对象的属性和方法的模板或蓝图,它定义了一组属性和方法,是创建对象的基础。类可以被继承,从而创建新的类。对象(Object):对象是类的一个实例,它具有类所定义的属性和方法。对象可以调用类中的方法和属性。封装(Encapsulation):封装是一种隐藏对象实现细节的机制,将对象的状态和行为包装在一起,对外只提供公共接口。原创 2023-05-09 13:10:08 · 1402 阅读 · 0 评论 -
c# 结构体与类区别
性能不同:由于结构体的实例被分配在栈上,所以在一些情况下,使用结构体比使用类更高效,比如在大量创建小对象时。但是,结构体也有一些限制,比如它的大小不能超过 16KB。针对默认构造函数的处理不同:结构体默认有一个无参的构造函数,而类如果没有显式定义构造函数,就会默认有一个无参的构造函数。内存分配方式不同:结构体是值类型,它的实例被分配在栈上,而类是引用类型,它的实例被分配在堆上。赋值方式不同:结构体赋值时是按值传递,即会复制一份,而类赋值时是按引用传递,即会复制一个引用。关键字定义,而类使用。原创 2023-04-25 09:47:20 · 1589 阅读 · 2 评论 -
C# static 实现的静态类与单例的优劣比较
静态类是一个只包含静态成员的类,不能被实例化,因为其所有成员都是静态的,所以它们在内存中只会存在一份。静态类的优势在于使用方便,不需要实例化就可以调用其中的方法和属性,且不需要考虑线程安全等问题。单例模式的优势在于可以通过实例化来访问类的成员,避免了静态成员可能存在的一些问题,例如代码可维护性、可测试性等。在实现全局共享时,静态类和单例模式都可以起到类似的作用,但是静态类更适用于实现一些通用的、不需要状态维护的功能,而单例模式更适用于保存应用程序状态的情况。在使用时,应根据实际需要来选择使用哪种方式。原创 2023-04-25 12:24:50 · 803 阅读 · 0 评论 -
C# 接口和抽象类的区别和使用场景
接口是一种规范,它只包含方法和属性的声明,并没有具体的实现。在这个示例代码中,Animal 类是一个抽象类,它包含了一个抽象方法 Move() 和一个虚拟方法 Eat(),Cat 类继承了 Animal 类并实现了它的抽象方法和虚拟方法。在这个示例代码中,Duck 类实现了 ICanSwim 和 ICanFly 接口,通过实现接口中的方法,Duck 类可以表现出游泳和飞行的行为。C# 中的接口和抽象类都是面向对象编程中常见的概念,它们都可以用于定义一组方法和属性,但是它们之间有很多的区别和使用场景。原创 2023-04-18 16:01:06 · 1076 阅读 · 0 评论 -
C# 中的多态和虚方法,如何实现多态和使用虚方法?
在 C# 中,多态(Polymorphism)是面向对象编程的基本特性之一,它允许使用不同的对象和方法来执行同一操作。当基类中声明的方法被子类重写时,子类的方法将被调用。虚方法是一种允许子类覆盖的方法,它的实现是在运行时动态确定的。方法被声明为虚方法并且在子类中重写了,所以在运行时会调用子类中的方法,而不是基类中的方法。创建对象并调用方法:创建一个子类的对象,并调用重写的虚方法。在基类中声明虚方法:在基类中声明一个方法,并使用。这就是在 C# 中实现多态和使用虚方法的基本方法。关键字表示该方法是可重写的。原创 2023-04-19 10:38:52 · 1297 阅读 · 0 评论 -
C#重载(overload)和重写(overwrite)的区别。C# 中的运算符重载和类型转换,以及它们的使用场景和注意事项。
C# 中的运算符重载和类型转换是面向对象编程的重要概念,可以帮助我们简化代码实现,提高程序的可读性和可维护性。在下面,我们将介绍运算符重载和类型转换的基础知识、使用场景和注意事项。原创 2023-04-19 16:59:18 · 1346 阅读 · 0 评论 -
C# 性能优化和Unity性能优化
使用并发集合:如果需要处理并发的数据结构,可以使用 .NET Framework 中提供的并发集合,例如 ConcurrentDictionary、ConcurrentQueue 等等。例如,如果需要频繁地插入和删除元素,那么链表比数组更适合,因为链表的插入和删除操作比数组更快。避免使用反射:反射是一个非常强大的工具,但它的使用会导致性能损失。如果需要在循环中创建对象,应该尽量重用对象,或者使用对象池。总之,C# 性能优化是一个需要综合考虑的问题,需要从各个方面入手,不断优化代码,提高性能。原创 2023-05-16 21:12:54 · 1335 阅读 · 0 评论 -
C# 中的设计模式,如何使用常见的设计模式实现程序功能?
设计模式不是一种具体的技术,而是一种被广泛使用的编程思想,它们提供了一种经过验证的解决方案,是解决问题的一种思路,可以帮助开发人员解决特定类型的问题。行为型模式:用于描述对象之间的通信方式,包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。工厂模式是一种常见的设计模式,它的主要作用是创建对象。创建型模式:用于描述对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、原型模式和建造者模式。原创 2023-04-19 16:47:14 · 1270 阅读 · 0 评论 -
C# 内存池
当需要内存时,可以使用 Rent() 方法从内存池中获取一个内存块,使用完毕后再将其归还到内存池中,以便下一次使用。C# 内存池是一种高效的内存管理技术,它通过事先分配一定数量的内存,然后在需要时从内存池中获取空闲的内存,使用完毕后再将其归还到内存池中,以便下一次使用。与传统的内存分配方式不同,内存池避免了频繁的内存分配和回收,从而提高了程序的性能和稳定性。总之,内存池是一种非常有用的技术,可以提高程序的性能和稳定性,特别是在需要频繁地分配和释放内存的场景中。原创 2023-04-25 12:24:00 · 922 阅读 · 0 评论 -
C# 装箱拆箱
拆箱:将引用类型转换为值类型的过程,会将对象中存储的值复制到一个新的值类型中。值类型的可空类型:值类型的可空类型是一种特殊的引用类型,它可以包装一个值类型的值,并允许存储null值。是int类型的可空类型,它可以存储int类型的值或null值,而不需要装箱和拆箱。装箱:将值类型转换为引用类型的过程,会创建一个对象,这个对象存储在堆中,同时将值类型的值复制到这个对象中。例如,List<int>是一个泛型类型,它可以在运行时存储int类型的值,而不需要装箱和拆箱。可以使用泛型和值类型的可空类型来避免这种开销。原创 2023-04-21 14:49:33 · 425 阅读 · 0 评论 -
协程是怎么实现的,如何用纯C#怎么实现协程,携程和线程的区别
在上面的代码中,CoroutineExample类是一个协程管理器,通过Start()方法来启动协程的执行,通过Stop()方法来停止协程的执行,通过Resume()方法来恢复协程的执行。在Resume()方法中,使用while循环来遍历协程中的yield语句,如果协程被暂停或已经执行完毕,则跳出循环。在上面的代码中,MyCoroutine()方法是一个协程,使用StartCoroutine()方法来启动协程的执行。在MyCoroutine()方法中,使用yield return语句来暂停协程的执行。原创 2023-04-21 14:47:56 · 1870 阅读 · 0 评论 -
C# 多线程编程的基础知识和常用的线程同步方式
多线程编程是现代软件开发中非常重要的一个方向,C# 作为一门现代化的编程语言,提供了丰富的多线程编程支持。下面我们来介绍一下 C# 多线程编程的基础知识和常用的线程同步方式。原创 2023-04-18 17:04:50 · 866 阅读 · 0 评论 -
C# 中的并发编程,如何使用并发编程实现多线程和异步操作?
使用 Thread 类需要手动创建线程,启动线程并管理线程的生命周期,而使用 ThreadPool 类则可以让 .NET 框架来管理线程池,从而减少了手动管理的工作量。以上是 C# 中实现多线程和异步操作的基本方式和示例代码。异步操作: 异步操作可以提高程序的响应性能,避免因为 I/O 操作等阻塞操作导致的性能问题。在 C# 中,可以使用 async 和 await 关键字来实现异步操作。C# 提供了多种方式来实现并发编程,其中常用的包括多线程和异步操作。使用 await 关键字等待异步操作完成;原创 2023-04-19 11:11:28 · 1014 阅读 · 0 评论 -
C# 进程
在这个示例中,我们使用 Process 类启动了一个 Notepad 进程,并等待它退出。首先,我们创建了一个 Process 实例,然后设置了它的 FileName 属性为 "notepad.exe"。然后,我们输出了进程的 ID,并调用 WaitForExit 方法等待进程退出。最后,我们输出了进程退出时的状态码。进程(Process)是计算机中的一个术语,指的是正在执行的程序实例。在操作系统中,每个进程都有自己的地址空间、内存、数据栈和代码段等资源,以及一些控制信息,如进程优先级、状态等。原创 2023-04-24 13:51:25 · 282 阅读 · 0 评论 -
C# ref/out
具体而言,如果一个方法的参数被声明为ref类型,则该参数必须在调用方法之前被初始化。需要注意的是,调用方法时也必须使用ref关键字,以便让编译器知道这个参数是按引用传递的。在方法内部,必须对该变量进行初始化。与ref不同,out关键字可以让方法在调用之前对变量进行初始化,这对于一些需要返回多个值的方法非常有用。需要注意的是,调用方法时也必须使用out关键字,以便让编译器知道这个参数是按引用传递的。总的来说,ref和out都可以用于修改调用者传递进来的变量的值,但使用时需要注意它们的具体语义和限制。原创 2023-04-24 13:51:38 · 115 阅读 · 0 评论 -
C# 和Unity中的委托和事件机制
事件是一种特殊的委托,用于向其他对象通知某个发生的事件。事件定义是一种特殊的委托类型,用于定义事件的签名。事件处理程序是一个方法,它与事件定义兼容,并在事件发生时被调用。委托是一种类似于C/C++函数指针的概念,它允许将方法作为参数传递到其他方法中,以实现回调函数的功能。委托是一种类型,它可以表示一个或多个方法的引用,并且可以像普通函数一样被调用。在C#中,委托和事件是非常重要的概念,用于实现程序中的回调和事件处理。方法来触发事件,并在事件处理程序中输出事件的消息。在这个示例代码中,我们定义了一个事件。原创 2023-04-18 17:29:06 · 797 阅读 · 0 评论 -
C# 泛型编程的基础知识和常见应用场景
泛型编程是C#编程中的一项重要特性,它提供了一种定义和使用类型参数的方式。通过泛型,可以在编写代码时使用类型参数来代替具体的类型,使得代码更加灵活、可重用和类型安全。原创 2023-04-18 17:22:55 · 399 阅读 · 0 评论 -
C# new与malloc
这些操作确保对象的成员变量和方法得到正确的初始化,并提供了对象使用所需的初始状态。基类成员的初始化会调用基类的构造函数,而派生类新增的成员则可以在派生类的构造函数中初始化。关键字进行一些优化,例如对象池的使用或内存布局的优化。构造函数是一个特殊的成员方法,用于初始化对象的状态和执行必要的操作。等底层内存分配方法一般用于与非托管代码的交互或特殊情况下的性能优化,需要谨慎使用,并确保正确地管理内存的分配和释放。关键字来进行对象的实例化和内存的分配,因为它提供了更高级别的内存管理和自动垃圾回收。原创 2023-06-14 11:16:27 · 1655 阅读 · 0 评论 -
C# GC垃圾回收、智能指针
在C#中,开发人员不必再手动地去管理内存,也不需要关心对象的生命周期和销毁,而是由GC在程序运行时自动完成这些操作。总之,C#中的垃圾回收是一种自动管理内存的机制,它可以让开发人员专注于业务逻辑,而不用过多地关注内存管理。同时,为了优化GC性能,开发人员需要了解GC的工作原理,并采取相应的措施进行优化。在C#中,GC负责自动回收不再使用的内存对象,并使其可用于新的内存分配。虽然GC的工作是自动的,但是在某些情况下,手动触发GC可以提高程序的性能。将大的对象转换为小的对象,避免大对象直接进入LOH;原创 2023-04-21 14:49:20 · 1500 阅读 · 0 评论 -
C#迭代器
C#迭代器(Iterator)是一种特殊的方法,它允许您遍历集合中的元素,而无需暴露集合的实现细节。迭代器使您能够在不知道序列的完整长度的情况下遍历序列。使用迭代器的好处之一是它可以大大减少内存消耗,因为它不需要在内存中存储整个集合。此外,迭代器还允许您延迟计算,直到需要处理集合的元素时才进行计算。语句告诉编译器,在每次迭代时返回一个元素,并暂停方法的执行状态,等待下一次迭代。使用迭代器时,可以像枚举器一样遍历序列。的方法,它接受一个字符串参数并返回一个。循环来遍历字符串中的每个字符,并使用。原创 2023-05-09 12:54:37 · 286 阅读 · 0 评论 -
C# 中的属性和索引器
属性(Property)可以看作是类中的一种特殊的方法,它允许程序员通过简单的方式来访问对象中的数据,同时也提供了对数据的安全访问控制。属性通常会对类中的字段进行封装,通过 getter 和 setter 方法实现对字段的读取和写入。另一个重要的概念是索引器(Indexer),它允许我们通过索引的方式来访问类中的成员变量。在C#中,属性和索引器是面向对象编程中的两个重要概念,它们都是用于封装数据和实现访问控制的。访问器方法,我们可以对类中的私有字段进行读取和写入操作,同时也可以对属性的访问进行控制。原创 2023-04-19 10:32:15 · 1003 阅读 · 0 评论 -
C# 中的反射和特性机制
然后使用反射获取 MyClass 类型,并通过 Activator 类动态创建 MyClass 类型的实例,最后获取 MyMethod 方法并调用它。可以将特性视为一种标记,标记代码中的类型、方法、属性、字段等成员,用于传递元数据信息,以支持程序在运行时进行一些操作。C# 中的反射机制为开发者提供了一种在程序运行时通过代码获取类型、成员等信息的方式,可以实现程序的动态性。C# 中的反射和特性机制在很多场景下都有着重要的应用,例如动态加载程序集、实现自定义序列化、实现依赖注入等。原创 2023-04-19 10:33:01 · 122 阅读 · 0 评论 -
C# 中的异步编程模型(Async/Await)和并行编程模型(Parallel)。
异步编程模型(Async/Await)是用于处理异步操作的一种技术,它允许程序在执行异步操作时不会被阻塞。异步编程模型(Async/Await)是基于任务的编程模型,其中任务是一种表示异步操作的对象。Async/Await的基本思想是,将异步操作封装到一个任务(Task)中,并使用await关键字等待任务的完成,使程序可以在等待任务完成时继续执行其他操作。C# 中的异步编程模型(Async/Await)和并行编程模型(Parallel)是在处理异步操作和并行处理任务方面非常重要的概念。原创 2023-04-19 16:56:42 · 1088 阅读 · 0 评论 -
C# 中的单元测试,如何使用单元测试进行程序测试和调试?
除了 Visual Studio 自带的单元测试框架外,还可以使用第三方框架如 NUnit 和 xUnit 来编写单元测试。这些框架提供了更丰富的功能,例如测试套件的组织、参数化测试、异步测试等。单元测试是一种软件测试方法,用于测试单个功能或方法是否按预期工作。在 C# 中,可以使用 .NET 框架中的单元测试工具来编写和运行单元测试。在运行测试时,测试框架将自动调用这些测试方法,并生成有关测试结果的报告。在这个示例中,我们创建了一个名为。的测试方法,该方法实例化了。的类,其中包含了一个名为。原创 2023-04-19 13:56:17 · 1893 阅读 · 0 评论 -
C# 异常处理机制和常见的异常类型
在 C# 中,异常处理是一个非常重要的概念,它可以让我们在程序发生错误时进行有效的处理,使程序具备更好的鲁棒性。在上面的代码中,try 块中的代码可能会抛出一些异常,如果发生异常,则会进入到相应的 catch 块中进行处理。总之,在 C# 中,异常处理是一项非常重要的任务,我们需要根据实际情况进行合理的异常处理,以保证程序的正常运行。除了上述常见的异常类型外,还有很多其他的异常类型,我们可以根据实际需要选择合适的异常类型进行处理。原创 2023-04-18 16:03:12 · 1554 阅读 · 0 评论 -
C# LINQ 查询语句和方法的区别及使用
C# LINQ(Language-Integrated Query)是一种强类型、编译时的查询技术,它可以通过统一的语法对多种数据源进行查询和操作,包括对象、集合、数据库等。LINQ 提供了很多查询方法,例如:Where、OrderBy、Select、Join、GroupBy 等,这些方法可以对数据源进行过滤、排序、投影、连接、分组等操作。查询语句(Query Syntax)是一种类似 SQL 的语法,使用关键字 from、where、orderby、select 等来构建查询语句。原创 2023-04-18 16:23:06 · 1361 阅读 · 0 评论 -
如果C#没有提供强制类型转换,你怎么自己去实现它?
使用Convert类:Convert类是C#中一个非常实用的类,它提供了很多转换方法,可以将一个类型转换为另一个类型。使用泛型方法:可以使用泛型方法来进行类型转换,通过传递不同的类型参数来实现不同类型之间的转换。比如,可以定义一个ConvertTo<T>()方法,将一个类型转换为指定的类型。比如,可以定义一个ToInt()方法,将一个字符串转换为整数类型。需要注意的是,自定义类型转换方法可能会出现一些错误,比如转换失败或者转换结果不正确,因此需要对输入参数进行检查和错误处理。原创 2023-04-21 14:47:48 · 164 阅读 · 0 评论 -
C# 中的正则表达式,如何使用正则表达式进行字符串匹配和替换?
在 C# 中,可以使用正则表达式进行字符串匹配和替换。正则表达式是一种用来描述字符串模式的语言,可以用来检查一个字符串是否符合某种模式,或者从字符串中提取符合某种模式的子串。其构造函数接受两个参数,第一个参数是正则表达式的字符串表示,第二个参数是一个选项枚举类型,用来指定匹配模式。该方法接受两个字符串参数,第一个参数表示要进行替换的原始字符串,第二个参数表示要替换成的新字符串。方法来进行字符串匹配。该方法接受一个字符串参数,用来表示要匹配的字符串。中的数字替换成字符串 "dog",并将结果输出到控制台。原创 2023-04-19 17:03:57 · 3353 阅读 · 0 评论 -
C# Lambda表达式
Lambda表达式是C#语言中一种函数式编程的特性,它的主要作用是简化代码和提高代码的可读性。在使用Lambda表达式时,可以通过其内联特性来实现编写更加简洁的代码。下面将分别介绍Lambda表达式的语法和内联特性。Lambda表达式是一种匿名函数,它可以快速创建简单的委托或表达式树。在C#中,Lambda表达式通常用于替代匿名方法。Lambda表达式通常以箭头“=>”分隔左侧的输入和右侧的输出。原创 2023-04-18 11:01:19 · 6723 阅读 · 0 评论 -
C#有序的map和无序的map实现上的区别,无序map怎么处理哈希冲突的,红黑树
在C#中,有序的Map和无序的Map在实现上有一些区别。红黑树的特点是具有较好的平衡性能,插入、删除和查找的平均时间复杂度为O(log n),其中n是树中元素的个数。链地址法(Chaining):每个槽位维护一个链表或其他数据结构,当发生哈希冲突时,将冲突的键值对添加到对应槽位的链表中。在处理哈希冲突方面,有序的Map不需要考虑哈希冲突,因为它使用的是平衡二叉搜索树,其中键是根据顺序进行排序的,而不是根据哈希值。而无序的Map使用哈希表来存储键值对,哈希表根据键的哈希值将键值对分散到不同的槽位中。原创 2023-06-09 09:34:16 · 1826 阅读 · 0 评论 -
C# 字典Dictionary
C#中的字典(Dictionary)是一种非常有用的数据结构,它允许通过键值对(key-value pair)来存储和访问数据。包含键 banana。原创 2023-04-18 15:51:13 · 780 阅读 · 0 评论 -
C# 哈希表Hashtable
然后,通过Add方法向哈希表中添加元素,键值对分别为“key1”和“value1”、“key2”和“value2”、“key3”和“value3”。接着,通过哈希表的索引器,获取了键“key1”和“key2”对应的值,并更新了键“key3”对应的值。以上示例中,通过创建Hashtable对象,添加了三个键值对,分别为"name"和"Alice"、"age"和20、"city"和"New York"。接着,使用索引器通过键获取值,修改键对应的值,并使用Remove方法删除键值对。原创 2023-04-24 13:51:31 · 999 阅读 · 0 评论 -
C# List
List 类型提供了很多有用的方法,如 Add、Remove、Insert、Clear、Sort 等,这些方法都可以用来操作 List 类型的列表。使用 List 类型可以方便地操作动态数组,而且比 ArrayList 更加高效,因为它不需要进行装箱和拆箱操作。在 C# 中,List 是一个动态数组类型,它可以根据需要自动增加或缩小数组的大小。ToArray 方法用于将 List 中的元素转换为一个数组。Reverse 方法用于将 List 中的元素翻转。下面介绍一些常用的 List 方法以及它们的用法。原创 2023-04-18 15:42:39 · 1555 阅读 · 0 评论 -
C# ArrayList
类型的对象,所以在获取元素时需要进行类型转换。此外,由于动态扩容需要重新分配内存,所以在需要高效读取和写入元素的场合,建议使用固定长度的数组(如。命名空间中的一个类,是一个可动态增长和缩减的数组。与 C# 数组不同,可以自动扩容,并支持动态插入和删除元素,可以存储任何类型的对象。原创 2023-04-18 15:15:28 · 1466 阅读 · 0 评论 -
C#和lua、C和C++
总的来说,C++在C语言的基础上增加了面向对象编程的特性和更多的库支持,使得它能够更方便地开发大型项目。在游戏开发中,C#主要用于编写客户端和服务端的底层逻辑,而Lua主要用于编写游戏脚本和AI逻辑等。C和C++都是一种通用的编程语言,它们有许多共同点,但也有一些不同之处。C#的性能很高,可以编写高效的程序,适合编写游戏客户端、服务端等应用。C#有着丰富的语法和强大的面向对象特性,可以完成各种复杂的开发任务。Lua有着简洁的语法和灵活的设计,可以在不同的领域进行扩展和应用。原创 2023-04-24 13:49:29 · 1040 阅读 · 0 评论 -
C# string和char[]相互 转换
需要注意的是,在转换过程中,会创建新的对象并分配新的内存,因此如果在处理大量数据时,需要谨慎使用这些转换操作。之间的相互转换来实现字符串和字符数组之间的转换。在 C# 中,可以通过。原创 2023-04-24 13:51:53 · 1925 阅读 · 0 评论 -
C# Select()字符串数组转为整型数组
要将字符串数组转为整型数组,可以使用C#中的LINQ(Language-Integrated Query)和。需要注意的是,如果字符串数组中有不能转为整型的字符串,将会抛出异常。方法可以将一个集合的每个元素应用一个转换方法后返回一个新的集合。将每个字符串转为对应的整型,并返回一个新的整型数组。方法将LINQ查询结果转为整型数组。方法将整型数组转为字符串,方便输出。原创 2023-04-21 14:46:55 · 1071 阅读 · 0 评论 -
C# Replace()、Trim()、Split()、Substring()、IndexOf() 、 LastIndexOf()函数
需要注意的是,LastIndexOf()方法返回最后一次出现的位置索引,如果字符串中不存在指定的字符或子字符串,将返回-1。需要注意的是,IndexOf()方法返回第一次出现的位置索引,如果字符串中不存在指定的字符或子字符串,将返回-1。C#中的LastIndexOf()方法与IndexOf()方法类似,也是用于在字符串中查找指定的字符或子字符串,并返回最后一次出现的位置索引。C#中的IndexOf()方法用于在字符串中查找指定的字符或子字符串,并返回第一次出现的位置索引。,包括空格、制表符和换行符等。原创 2023-04-16 15:58:01 · 3755 阅读 · 0 评论 -
C#内建接口:IComparable, Array.Sort()底层实现原理。
是一个接口,它定义了一个用于比较对象的方法CompareTo。在C#中,接口可以被实现,以便在需要比较对象的场合使用,例如在排序算法中。原创 2023-04-16 15:07:26 · 1057 阅读 · 0 评论 -
C#输入输出
C# Console 类主要用于控制台应用程序的输入和输岀操作。和的区别在于,前者读取是根据空白符隔开且返回int类型,后者是用的换行符返回string类型。举个例子,如果读取的数据是a使用读取字符a后会转化成对应的ascii码97使用读取字符a就会原样返回a函数介绍读取用户的输出,返回一个int类型读取用户的输入,返回一个string类型输出数据输出数据并换行读取用户输入,多用于暂停程序如果输入的数据是数字时,使用。原创 2023-04-16 14:46:01 · 8279 阅读 · 0 评论