<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[S_Yu_Tong的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/S_Yu_Tong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; S_Yu_Tong]]></copyright><item><title><![CDATA[C#图解教程笔记17-枚举器和迭代器]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/155425513</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/155425513</guid><author>S_Yu_Tong</author><pubDate>Mon, 08 Dec 2025 17:17:32 +0800</pubDate><description><![CDATA[我们可以使用foreach语句遍历数组中的元素，什么数组可以这么做？原因是数组可以按需提供一个叫作枚举器的对象，枚举器可以依次返回请求的数组中的元素。对于有枚举器的类型而言，必须有一种方法来获取它。获取对象举器的方法是调用对象的GetEnumerator方法，实现该方法的类型叫做可枚举类型。foreach结构设计用来和可枚举类型一起使用。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记16-泛型]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/155046880</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/155046880</guid><author>S_Yu_Tong</author><pubDate>Sat, 29 Nov 2025 15:51:41 +0800</pubDate><description><![CDATA[协变与逆变是 C# 中 泛型 / 委托 / 接口 的高级特性，核心作用是 在类型安全的前提下，允许泛型类型之间的隐式转换，让代码更灵活、复用性更高。在讲协变逆变前，必须先理清 “基类与派生类的转换规则” 和 “泛型类型的转换问题”：C# 中，派生类可以隐式转换为基类（这是类型安全的），反之则不行。如果把上面的类型放到泛型中（比如List<T>），默认情况下 泛型类型不继承原类型的转换关系。//Error为什么报错？因为List<T>是 “可变集合”：如果允许转换，你可能会往animals里加。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记15-转换]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/154479329</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/154479329</guid><author>S_Yu_Tong</author><pubDate>Sat, 08 Nov 2025 16:54:53 +0800</pubDate><description><![CDATA[除了标准转换，我们还可以为类和结构定义隐式和显式转换，在之前我们已经了解过，需要注意：①除了 implicit 和explicit 关键字之外，隐式转换和显式转换的声明语法是一样的 ②需要 public和 static 修饰符①只可以为类和结构定义用户自定义转换 ②不能重定义标准隐式或显式转换 ③对于源类型S和目标类型T，如下命题为真：S和T必须是不同类型；S和T不能通过继承关联，也就是说，S不能派生自T，而T也不能派生自S；S和T都不能是接口类型或object 类型；]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记14-接口]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/154202920</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/154202920</guid><author>S_Yu_Tong</author><pubDate>Wed, 05 Nov 2025 09:58:13 +0800</pubDate><description><![CDATA[接口是指定一组函数成员的而不是先他们的引用类型，所以只能类和结构来实现接口。关于使用场景，如一个函数PrintInfo(CA ca)非常有用，但是只能CA这个类使用，能不能创建一个能够成功传入PrintInfo的类，且不论该类是什么结构，PrintInfo都能正常处理？]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记13-事件]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/153877440</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/153877440</guid><author>S_Yu_Tong</author><pubDate>Tue, 28 Oct 2025 11:26:44 +0800</pubDate><description><![CDATA[由于事件的广泛使用，.NET框架提供了一个标准模式，该标准模式的基础是EventHandler委托类型，声明如下所示，注意：①第一个参数保存了触发事件的对象的引用 ②第二个参数用来保存状态信息 ③返回类型是void关于EventArgs：①不能传递任何数据，用于不需要传递数据的回调函数-通常被忽略 ②如要要传递数据那么需要声明一个派生自EventArgs的类，并用合适的字段保存数据。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记12——委托]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/153515288</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/153515288</guid><author>S_Yu_Tong</author><pubDate>Sat, 18 Oct 2025 20:41:52 +0800</pubDate><description><![CDATA[可以认为委托是持有一个或多个方法的对象，这些方法具有相同的签名和返回类型，虽然我们一般不说“执行”一个“对象”，但是委托可以执行，结果是委托会执行他所持有的方法。如果你有C++基础，那么可以把它理解为一个类型安全的，面向对象的C++函数指针。需要注意：①委托所持有的所有方法的列表称为调用列表 ②调用列表中的方法既可以是实例方法也可以是静态方法，只要确保方法与委托的返回类型与签名(包含ref和out修饰符)相同 ③调用委托时会执行调用列表中的所有方法。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记11——数组]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/152001417</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/152001417</guid><author>S_Yu_Tong</author><pubDate>Wed, 24 Sep 2025 23:01:14 +0800</pubDate><description><![CDATA[数组是由一个变量名称表示的一组同类型的数据元素。一些重要的有关描述数组的概念包括：①元素-数组的独立数据项，必须是同类型或继承自相同类型 ②维度/秩-数组的维度称为秩 ③维度长度-数组某个维度包含的数据总数 ④数组长度-数组所有的数据总数。同时还需要注意：①数组一旦创建长度就固定了，不支持动态数组 ②索引下标从零开始。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记10——结构与枚举]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/151893766</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/151893766</guid><author>S_Yu_Tong</author><pubDate>Sun, 21 Sep 2025 13:16:51 +0800</pubDate><description><![CDATA[类型描述无参实例构造函数不能再程序中声明，不能被删除或重定义有参实例构造函数可以在程序中声明静态构造函数可以在程序中声明析构函数不能再程序中声明枚举是值类型，且只有一种类型的成员(命名的整数值常量，默认为int类型)，注意：①每个枚举类型都有一个底层整数类型 ②每个枚举成员被赋予一个底层类型的常量值 ③默认从0开始，每次多增加1 ④可以把枚举值赋值给枚举类型变量 ⑤成员名被当作字符串打印Green，Yellow，Red//OutRedGreenGreen。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记09——语句]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/151722846</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/151722846</guid><author>S_Yu_Tong</author><pubDate>Tue, 16 Sep 2025 11:12:12 +0800</pubDate><description><![CDATA[分为条件语句、循环语句、跳转语句。条件语句包含if、if...else、switch；循环语句包含while、do、for、foreach；跳转语句包含break、continue、return、goto、throw。注意C#测试表达式必须返回bool类型的值，数字没有bool意义。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记08——表达式和运算符]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/151371319</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/151371319</guid><author>S_Yu_Tong</author><pubDate>Thu, 11 Sep 2025 22:13:50 +0800</pubDate><description><![CDATA[关于此节会更详细的在17章讨论，这里简单说一下，我们可以为自己的类或者结构定义隐式或者显示转换，即将一个用户定义类型的对象转换为某个其他类型，需要注意定义时public和static修饰符是必须的。①隐式转换：编译器自动执行的类型转换。②显示转换：使用显示转换运算符时编译器才执行转换。//隐式转换语法如下...//显示转换语法如下...当我们声明了显示转换后，需要使用强制转换运算符进行调用，强制转换运算符放在一对圆括号内部如(TargetType)。return li;get。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记07——类和继承]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/151018453</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/151018453</guid><author>S_Yu_Tong</author><pubDate>Sun, 31 Aug 2025 22:03:52 +0800</pubDate><description><![CDATA[虽然派生类不能删除继承的成员，但是可以通过用与基类成员名称相同的成员来屏蔽成员，需要注意的是：①屏蔽基类数据成员，需要声明一个相同类型相同名称的成员。②频闭基类函数成员，需要声明带有相同签名(名称和参数列表)的函数成员。③要让编译器知道是在故意屏蔽继承的成员，可以使用new修饰符。④可以屏蔽静态成员。如果派生类中必须访问被隐藏的基类成员，可以使用base关键字，如Console.WriteLine("{0}", base.Field1);]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记06——深入理解类]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/150697062</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/150697062</guid><author>S_Yu_Tong</author><pubDate>Wed, 27 Aug 2025 16:24:34 +0800</pubDate><description><![CDATA[索引器是一组get和set访问器，与属性类似，如：①索引器不用分配内存来存储 ②都主要被用来访问其他数据成员，他们与这些成员关联，并提供获取和设置访问，区别是属性通常表示单个数据成员，索引器表示多个。需要注意的是：①索引器可以有一个访问器，也可以都有 ②不能被声明为static ③get与set访问器不一定要关联到某个字段或属性，这段代码可以做任何事也可以什么都不做，只要get返回某个指定类型即可。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记05——方法]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/150280004</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/150280004</guid><author>S_Yu_Tong</author><pubDate>Thu, 14 Aug 2025 15:32:40 +0800</pubDate><description><![CDATA[和字段类似，局部变量也保存数据，通常保存局部的或临时的计算数据，如Type Identifier = Value，局部变量的生存周期仅限于创建它的块与内嵌的块内，可以在方法体内任意位置声明，但必须在使用他们前声明，和字段的主要区别在于：①字段生存周期从被创建时开始，直到不再被访问时结束；局部变量从声明的一刻开始，块完成执行时结束。②字段可以被初始化为默认值；局部变量没有隐式初始化。③字段无论是什么类型都被存储在堆中，因为类是引用类型；局部变量存储位置取决于类型。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记04——类的基本概念]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/149974836</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/149974836</guid><author>S_Yu_Tong</author><pubDate>Wed, 06 Aug 2025 19:07:48 +0800</pubDate><description><![CDATA[程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合，被称为类，类包含数据成员与函数成员。一个运行中的程序就是一组相互作用的对象的集合。在我们需要使用类之前需要先声明类，如class MyEyExcellentClass{ 成员声明 }，类声明又被叫做类定义。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记03——类型、存储和变量]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/149882822</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/149882822</guid><author>S_Yu_Tong</author><pubDate>Wed, 06 Aug 2025 16:20:39 +0800</pubDate><description><![CDATA[C#程序是一组类型声明，类型是一种模板，而类型（如short，int）由名称、用于保存数据的数据结构以及约束条件组成。从某个类型模板创建实际的对象，称为实例化类型(int a)。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记02——C#编程概述]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/149798562</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/149798562</guid><author>S_Yu_Tong</author><pubDate>Sat, 02 Aug 2025 17:52:30 +0800</pubDate><description><![CDATA[用来命名变量、方法、参数和许多其他各种程序结构的一种字符串，标识符命名规则是有规定的，如：1.字母和下划线(A-Z,a-z,_)可以用在任何位置。2.数字不能放在首位。3.@只能放在首位，但不推荐@最为常用字符。int TotalCycleCount->这个即为标识符，或者说变量名，是包含在标识符集合的子集。]]></description><category></category></item><item><title><![CDATA[C#图解教程笔记——有关.NET]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/149796292</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/149796292</guid><author>S_Yu_Tong</author><pubDate>Thu, 31 Jul 2025 09:58:45 +0800</pubDate><description><![CDATA[由此开发出.NET Core，主要目标是多平台支持、快速开发和升级、更小的应用程序空间、简单的部署、更少的版本问题、开源社区支持、改进的程序性能、全新的开始。90年代末的各类编程技术由于诸如不是面向对象、不一致等各种各样的问题，导致市场需要一个集成的、面向对象的开发框架，由此微软发布了.NET框架，为了解决原有的问题以及实现下一代系统的目标。1.当前.NET框架基本停止功能更新，.NET Core为主推方向，后续版本统一命名为.NET，如.NET8，替代.NET Core。]]></description><category></category></item><item><title><![CDATA[C语言入门可能遇到的若干问题总结]]></title><link>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/127841206</link><guid>https://blog.youkuaiyun.com/S_Yu_Tong/article/details/127841206</guid><author>S_Yu_Tong</author><pubDate>Mon, 14 Nov 2022 12:17:44 +0800</pubDate><description><![CDATA[此篇文章是本人在c语言学习结束后，在学习过程中产生的部分疑惑的总结，希望能帮助其他人在入门C语言学习过程中解决一些问题，如果文章中有错误，也欢迎指正(不定期更新)。]]></description><category></category></item></channel></rss>