C#
文章平均质量分 58
何极光
何程龙,大学计算机科学与技术专业毕业,现就任前端开发工程师。曾荣获:CSDN博客专家、签约讲师,InfoQ写作社区专家博主,中国开源协会-开发分会管理委员会委员。现主要从事软件开发及软件教育培训,具有丰富的实战经验,善于将复杂问题简单化,擅长Web前端、JavaScript框架、Java并发、C#编程、Python Web、数据库SQL等领域及技术。
展开
-
C#中Action、Func与Predicate委托总结
前言:在前面的博文中,我介绍了C#委托(Delegate),那么本博文,主要是对它的一些内容补充以及扩展。参考博文:文章目录一、C#委托补充一、C#委托补充委托是引用类型,可以把它看作是用来存方法的一种类型。比如说类型string用来定义存取字符串的变量,那么委托类型delegate就可以用来定义存方法的变量。委托和类一样,是一种用户自定义类型。但类表示的是数据和方法的集合,而委托表示的是一个或多个方法的集合。你可以把delegate看作一个包含有序方法列表的对象,这些方法具有相同的签名和返回类型原创 2020-06-19 00:25:00 · 1303 阅读 · 1 评论 -
C#委托(Delegate)精讲
前言:C#中的委托类似于C或C++中函数的指针。委托是存有对某个方法的引用的一种引用类型变量,引用可在运行时被改变。文章目录一、委托的概念二、声明委托一、委托的概念委托类型表示对具有特定参数列表和返回类型的方法的引用。 通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。委托是引用类型,可以把它看作是用来存方法的一种类型。比如说类型string用来定义存取字符串的变量,那么委托类型delegate就可以用来定义存方法的变量。委托和类一样,是一种用户自定义类型。但类表示的是数据和方法的集合,而原创 2020-06-19 00:24:53 · 2568 阅读 · 0 评论 -
C#正则表达式精讲
前言:正则表达式是一种匹配输入文本的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。下来,让我们共同进入学习。文章目录一、什么是正则表达式?二、正则表达式的组成三、元字符介绍四、Regex 类,方法使用一、什么是正则表达式?英文Regular Expression,是计算机科学的一个重要概念,它使用一种数学算法来解决计算机程序中的文本检索,匹配等问题。正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持,C#也不例外,它可以帮我们原创 2020-06-19 00:24:39 · 817 阅读 · 0 评论 -
C#接口实现多继承
一、概述接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口。二、示例C#中接口可以多继承,接口之间可以相互继承和多继承。一个类可以同时继承一个类和多个接口,但是接口不能继承类。using System;/** 假如你是一名在职学生,你就具有双重身份。一个身份是学生,必须完成学习任务,一个身份是职员,必须完成工作任务。进一步说,你是计算机类学生,除了学习基础课程, 还必须学习C#程序设计。现在建立一个模型,应该如何建立? 1.我们首先来定义一个学生接口,规定学生必须学习,再建原创 2020-06-14 22:17:46 · 6120 阅读 · 0 评论 -
C#隐式接口与显式接口总结
文章目录一、概述二、示例三、总结一、概述通俗的来讲,“显示接口实现”就是使用接口名称作为方法名的前缀;而传统的实现方式称之为:“隐式接口实现”。二、示例interface IAnimal{ void Dog();}class Animal:IAnimal{ public void Dog() { Console.WriteLine("dog..."); }}定义了一个Animal接口,一般我们都会这么调用://通过类调用Animal animal = ne原创 2020-06-14 22:03:10 · 720 阅读 · 2 评论 -
C#的默认修饰符
C#的默认修饰符类、结构的默认修饰符是internal。类中所有的成员默认修饰符是private。接口默认修饰符是internal。接口的成员默认修饰符是public。命名空间、枚举类型成员默认修饰符是public。委托的默认修饰符是internal。在命名空间内部或编译单元顶部的所有类型,默认修饰符是internal,可以人为改为public。...原创 2020-06-14 20:18:33 · 2160 阅读 · 0 评论 -
C#使用Winfrom、CS实现计算器功能
前言:本博文演示,如何使用Winfrom、CS实现简易计算器,可计算加、减、乘、除、余、幂。文章目录一、前端页面设计二、创建类,用来实现计算功能三、后端代码编写四、执行效果图五、所用知识总结一、前端页面设计二、创建类,用来实现计算功能using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading原创 2020-06-14 16:19:31 · 1059 阅读 · 0 评论 -
C#中虚方法与抽象方法的区别
前言:在前面的博文中,我介绍了C#中的虚方法与抽象方法,本博文将对两者的区别进行详细叙述。参考博文:浅谈C#中虚方法与隐藏方法的区别、深究C#中的抽象类、抽象属性、抽象方法文章目录一、虚方法的回顾二、抽象方法的回顾三、虚方法与抽象方法的区别四、对于两者区别的总结一、虚方法的回顾虚方法必须使用virtual修饰。虚方法同抽象方法(adstract)一样使用override关键字重写。虚方法在子类中可以实现,也可以不实现。虚方法必须有方法体哪怕是空的。虚方法不能使用sealed修饰,否则不能重写原创 2020-06-14 11:38:10 · 1469 阅读 · 0 评论 -
C#中String与StringBuild的区别
前言:本博文,主要讲解C#String与StringBuild的区别,其他内容,请参考:文章目录一、两者区别概述二、通过例子分析下三、深入认识StringBuilder四、回看两个类型一、两者区别概述首先,我们要明确,String是引用类型,一旦赋值,值是不可改变的。每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新原创 2020-06-13 22:48:22 · 1440 阅读 · 0 评论 -
关于C#String与StringBuild的介绍
前言:在前面的博文中,我写过一篇C# 字符串(String)精讲,本博文是对其的一些补充,并引出与String紧密相关的StringBuild,在后面的博文中,我会对两者的区别进行着重讲解,在此只做简单介绍。文章目录一、关于String的理解二、关于String的更多方法三、对于StringBuild类的介绍一、关于String的理解string创建的字符串实际上是一个不可变的数据类型,一旦对字符串对象进行了初始化,该字符串就不能改变内容了,上面的示例中实际上是创建了一个新的字符串,把旧字符串的内容复原创 2020-06-13 22:44:39 · 1558 阅读 · 0 评论 -
C#重载与重写的区别
前言:在之前的博文中,我总结过重载与重写的区别与用法,本博文算是一个系统的概况。文章目录一、重载与重写的区别二、重载与重写的特征三、重载与重写的对比一、重载与重写的区别重载必须在同一个类,重写在派生类重载方法名,参数列表必须不同,返回值类型可不同。重写的两个方法返回值、方法名、参数列表必须完全一致。重写子类异常不能超过父类相应方法抛出的异常。重写子类访问级别不能低于父类相应方法的访问级别。关键字: 重写(override)、重载(overload)可在子类中被重写的方法一定要被标记成vir原创 2020-06-13 18:10:01 · 3603 阅读 · 0 评论 -
C#泛型类与泛型方法总结
前言:本博文从C#泛型入手,依次介绍泛型类和泛型方法,如果读者想对泛型有更多的了解,可访问本人另一篇博文:C#中List泛型用法,必知必会!文章目录一、泛型是什么?二、泛型类的定义三、泛型方法定义一、泛型是什么?泛型可以理解为广泛的类型,或者不确定的类型,也就是说允许我们编写一个可以与任何数据类型同时运行,且不报错的方法或者类。泛型通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。二、泛型类的定义定义一个泛型类就是指的是:定义一个类,这个类中原创 2020-06-11 11:21:11 · 3263 阅读 · 0 评论 -
C#集合类之列表List
前言:当我们有很多类型一样的数据的时候,前面我们一般使用数组来进行管理,但是这样有一个缺点就是数组的大小是固定的。如果我们很多类型一样的数据,比如游戏得分,我们可以就可以使用集合类来进行管理,比如列表List,我们可以使用列表List很方便的添加数据,删除数据还有其他对数据的操作。关于数组的知识,请查看本人另一篇博文:C# 数组(Array)精讲文章目录一、列表List的创建和使用二、关于列表的更多内容三、列表的遍历四、常用操作列表的属性和方法一、列表List的创建和使用创建列表(列表可以存储任何类原创 2020-06-11 11:20:16 · 3023 阅读 · 0 评论 -
抽象类中是否一定要有抽象方法?
抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。抽象类可以没有抽象方法,甚至可以和普通类一样含有构造方法。当你要求不能创建某个类的实例,只能通过其他类继承这个类来使用时,就可以定义为抽象类。抽象类可以没有抽象方法,也可以包含非抽象方法,但有抽象方法的类一定是抽象类。...原创 2020-06-11 09:20:14 · 9620 阅读 · 0 评论 -
C#接口(Interface)精讲
前言:接口的定义是指定一组函数成员而不实现成员的引用类型,其它类型和接口可以继承接口。文章目录一、接口的概念二、示例讲解1、创建接口2、实现接口3、执行结果三、对于接口的补充四、关于接口的总结五、接口的一些注意事项六、接口和抽象类的区别一、接口的概念接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 “是什么” 部分,派生类定义了语法合同 “怎么做” 部分。接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结原创 2020-06-10 18:31:07 · 1397 阅读 · 0 评论 -
C#访问修饰符,简要总结!
修饰符,用来类型或者成员的关键字。修饰符可以指定方法的可见性。详情请参考博文:文章目录一、成员访问修饰符二、类的访问修饰符三、其他访问修饰符一、成员访问修饰符public和private修饰字段和方法的时候,表示该字段或者方法不能通过对象去访问,只有public的才可以通过对象访问,private只能在类模板内部访问。protected保护的,当没有继承时,它的作用和private的一样的;当有继承的时候,protected表示可以被子类访问的字段或者方法。二、类的访问修饰符public:原创 2020-06-10 12:15:51 · 701 阅读 · 0 评论 -
C#密封类和密封方法总结
前言:密封类可以用来限制扩展性,如果密封了某个类,则其他类不能从该类继承;如果密封了某个成员,则派生类不能重写该成员的实现。文章目录一、概念介绍1、密封类2、密封方法二、示例讲解1、密封类2、密封方法三、补充知识1、密封类2、密封方法四、用途总结一、概念介绍1、密封类有些时候,我们并不希望所编写的类被继承,如果所有的类都可以被继承,则类的层次结构将会变得十分复杂,从而加重理解类的困难。此时,可以用sealed来定义密封类。这样的话,可以防止被其他类继承。C#中的密封类是指该类不可以被继承。密封原创 2020-06-10 11:02:50 · 3003 阅读 · 0 评论 -
深入理解C# 中 “$” 符号的作用以及用法
前言:$是c# 6.0 的语言特性,功能类似string.format(),更方便的地方在于不要像format一样使用索引,可以直接使用变量、表达式或者方法的执行。文章目录一、C#中`$`的作用二、C#中`$`的用法三、关于`$`的示例讲解四、关于`$`的补充知识一、C#中$的作用谈及这个$,其实它是C#6.0语法中模板字符串的一种写法,什么是模版字符串?还记得你们用过的格式化字符串吗?string.Format() 这个方法,是最常用的方法之一。那$又是什么呢?它是为了替代string.forma原创 2020-06-10 09:52:26 · 28394 阅读 · 6 评论 -
C#中的抽象类、抽象属性、抽象方法
前言:本博文讲述了C#面向对象中的抽象类,通过本博文的阅读,读者可以掌握C#抽象类的概念、应用、好处以及一些特性。文章目录一、抽象类概念二、示例讲解三、抽象类的作用四、使用抽象类的好处五、抽象类总结一、抽象类概念C#允许把类、属性和函数声明为abstract。抽象类不能实例化,抽象类可以包含普通属性和抽象属性,普通函数和抽象函数。抽象函数就是只有函数定义没有函数体的函数。显然,抽象函数本身也是虚拟(virtual)的。注意:类是一个模板,那么抽象类就是一个不完整的模板。我们自然不可以使用不完原创 2020-06-10 00:51:31 · 6776 阅读 · 0 评论 -
C#中使用this和base关键字小技巧,你真的知道吗?
this和base关键字小技巧this可以访问当前类中定义的字段、属性和方法,有没有this都可以访问。有this可以让我们的IDE工具(例:Visual Studio )给出提示,另外当方法的参数跟字段重名的时候,使用this可以表明访问的是类中的字段。base可以调用父类中的公有方法和字段,有没有base都可以访问,但是加上base.,我们的IED工具会给出提示,把所有可以调用的字段和方法罗列出来,方便选择。...原创 2020-06-09 23:50:20 · 450 阅读 · 0 评论 -
C#中方法签名指什么?
方法签名一个方法由方法名、参数个数、参数类型、参数顺序、返回值这几个部分组成。方法签名由方法名称和一个参数列表(参数个数、类型与顺序)组成。方法在重载时,利用方法签名的不同,来区别调用者到底调用的是哪个方法!同理,方法也可根据签名去区分重写和覆盖。 它主要应用在重载、重写、覆盖一个方法的时候,分别要求签名:不同、相同、相同,方法体随便。注意:方法的签名并不包括方法的返回值。虽然每个重载方法可以有不同的返回类型,单从返回类型并不足以区分所调用的是哪个方法。...原创 2020-06-09 23:34:51 · 3460 阅读 · 0 评论 -
C#中虚方法与隐藏方法的区别
前言:本博文讲解了C#中虚方法与隐藏方法的概念、定义以及区别。文章目录一、虚方法1、概念讲解2、示例讲解3、总结一下二、隐藏方法1、概念讲解2、案例讲解3、总结一下三、虚方法与隐藏方法的区别1、重写和隐藏的定义2、重写和隐藏的区别一、虚方法1、概念讲解在我们的C#编程中,把一个基类函数声明为virtual,这样我们就可以在它的任何派生类中重写该函数。同时,我们在其派生类中重写另外一个函数时,要使用override关键字显示声明。重写之后,原来的方法就不存在了。2、示例讲解首先,我们创建基类Pe原创 2020-06-09 22:54:39 · 1183 阅读 · 3 评论 -
深入理解C#构造函数与析构函数
前言:在前面的博文中,我介绍了C#中的构造函数,详情戳:C#中的构造函数详解,建议收藏!在本博文接下来的部分,我将对构造函数、析构函数等做一系列的补充,可谓是干货满满!话不多说,开始学习吧!文章目录一、构造函数1、构造函数的概念2、构造函数的定义3、默认构造函数与有参构造函数4、静态构造函数5、静态构造函数和实例构造函数的使用二、析构函数三、构造函数与析构函数区别一、构造函数首先,我们要明确C#中构造函数是什么,它能做什么,它的特点又是什么?为此,我专门的写了一篇博文介绍C#中的构造函数,详情戳:C#原创 2020-06-09 17:08:29 · 2013 阅读 · 0 评论 -
C#继承细则,你真的知道吗?
前言:今天在编写C#继承案例时,发现了一个很有意思的内容,决定记录下来和大家分享一下。更多继承相关的知识,请查看本人另一篇博文:深入理解C#面向对象之继承,谢谢支持!文章目录一、准备工作二、实现继承三、总结一下一、准备工作首先,我创建了一个Person基类和Student派生类。/// <summary>/// 创建一个人类的类/// </summary>class Person{ // 人类的姓名 public string Name { get;原创 2020-06-08 20:13:11 · 1386 阅读 · 1 评论 -
C#异常处理精讲
前言:在编程时,我们知道可能会有错误发生,但不能100%的肯定它们不会发生,此时最好能预料到错误的发生,编程足够健壮的代码以处理这些错误,而不必中断程序的执行。我们的错误处理(异常处理)就是用于这个目的,下面我们共同学习一下异常处理的相关知识。文章目录一、异常处理的概念二、C# 异常处理关键词三、异常处理语法讲解四、C# 中的异常类五、异常示例讲解一、异常处理的概念异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。异常提供了一种把程序控制权从某个部原创 2020-06-08 17:58:24 · 661 阅读 · 0 评论 -
深入理解C#中的堆(Heap)与栈(Stack),一次性全都掌握!
前言:今天我们着重讲解.Net下的栈(Stack)和托管堆(Heap)(简称堆)。如果你想提高程序性能,理解栈和堆,那学习这块更是必须的!文章目录一、C#中的值类型和引用类型1、值类型与引用类型的存储方式2、通过一个案例理解一下3、值类型与引用类型的区别二、堆栈理解入门1、堆与栈概念介绍2、托管堆3、内存堆栈与数据堆栈三、堆栈区别分析四、堆与栈存储讲解1、栈的深入讲解2、堆的深入讲解五、GC(Garbage Collection)垃圾收集器一、C#中的值类型和引用类型在讲堆与栈之前,我们先看看值类型和原创 2020-06-08 12:03:41 · 14100 阅读 · 1 评论 -
C#中Enum,Int,String的互相转换
一、Enum介绍Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型。如果没有显式声明基础类型,则使用 Int32。编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举。注意:枚举类型的基类型是除 Char 外的任何整型,所以枚举类型的值是整型值。二、声明一个Enum类型// 声明一个枚举,表示性别,里面有两个值// Pascal命名规则enum Sex{ male, // 男 Female, // 女 // 最后一个, 可有可无}二、E原创 2020-06-07 20:20:30 · 1496 阅读 · 0 评论 -
C#中如何判断传入值的数据类型
文章目录一、GetType方法二、typeof方法三、is方法一、GetType方法a.GetType():获取当前变量的类型对象string str = "Hello World";Console.WriteLine(str.GetType());注意:其他数据类型转换可仿照以上案例。二、typeof方法typeof(Int):获取的是Int类型的类型对象int num = 10;Console.WriteLine(num.GetType() == typeof(int));注原创 2020-06-07 20:19:57 · 7861 阅读 · 0 评论 -
深入理解C#面向对象之继承
前言:继承是在类之间建立一种相交的关系,使得新定义的派生类的实例可以继承已有的基类的特征并且还可以添加新的功能。文章目录一、C#继承的特点讲解二、简单的继承案例(含构造函数、方法继承)三、抽象类、密封类、抽象方法和虚方法一、C#继承的特点讲解派生类是对基类的扩展,派生类可以添加新的成员,但不能移除已经继承的成员的定义。继承是可以传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中声明的成员。构造函数和析构函数不能被继承,除此之外其他成员能被继承。基类中成员的原创 2020-06-07 15:48:31 · 1213 阅读 · 0 评论 -
C#中base关键字的几种用法
base其实最大的使用地方在面向对象开发的多态性上,当然在继承上也能见到。base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法。文章目录一、关于base调用基类无参构造函数二、关于base调用基类有参构造函数三、关于base的总结四、关于base的补充一、关于base调用基类无参构造函数1、创建基类与派生类public class Person{ public Person() { Console.WriteLine("Person原创 2020-06-07 14:55:02 · 2617 阅读 · 0 评论 -
C# 字符串(String)精讲
前言:本博文列举了C#字符串常用的属性、方法以及字符串的特点。文章目录一、字符串的概念二、字符串的常用方法三、字符串比较方法四、字符访问五、打散为字符数组六、格式化七、连接成一个字符串八、判断字符串是否为空九、判断是否包含字符串十、字符串的特点一、字符串的概念在使用 C# 编程时字符串是比较常用的一种数据类型,例如用户名、邮箱、家庭住址、商品名称等信息都需要使用字符串类型来存取。二、字符串的常用方法属性或方法作用Length获取字符串的长度,即字符串中字符的个数。Ind原创 2020-06-06 22:26:37 · 2121 阅读 · 0 评论 -
C#方法简略总结
前言:本博文为简略知识总结,详情请查看本人另两篇博文:C#方法(函数)精讲、深入理解C#方法重载和递归文章目录一、方法二、参数三、返回值四、return五、out参数六、ref参数七、params八、重载九、递归十、循环一、方法解决代码冗余的问题,让代码重复使用,功能单一。二、参数执行这个功能必须的条件。三、返回值执行后的结果。四、return返回方法的结果。在没有返回值的方法里面,终止当前方法。五、out参数可以实现多返回值,必须在方法里面赋值。六、ref参数将变量带入方法原创 2020-06-06 18:14:09 · 400 阅读 · 0 评论 -
深入理解C#方法重载和递归
前言:本博文讲述了C#中很常用的方法重载和递归,通过本博文的阅读,你可以掌握其相关理论并进行应用。下来,让我们共同学习一下。因为本博文里面的概念、理论也都是自己总结的,若有不足之处,欢迎留言补充、指正,谢谢!文章目录一、重载的概念二、重载示例讲解三、递归的概念四、递归示例讲解五、举个图形理解一下五、循环与递归之间的关系一、重载的概念方法重载是指在同一个类中方法同名,参数不同,调用时根据实参的形式,选择与他匹配的方法执行操作的一种技术。简单的来说:就是方法名相同,但是参数不同的方法。我们在这里所说的参原创 2020-06-06 16:41:05 · 622 阅读 · 0 评论 -
C#方法(函数)精讲
一、方法(函数)的概念函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们。要求的数据叫做参数,返回的执行结果就是返回值。有了函数,我们在写代码的时候就像拼积木,C#中的各种各样的技术其实就是通过for、if等这些基础的语法,将不同的函数按照一定的逻辑组织起来。二、关于方法(函数)的一些补充知识为什么叫方法和函数呢?指某原创 2020-06-06 15:29:06 · 5864 阅读 · 4 评论 -
C#中Array类精讲
文章目录一、Array类概念二、Array类属性三、Array类方法一、Array类概念Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。Array 类提供了各种用于数组的属性和方法,可看作扩充了功能的数组(但不等同数组),可以使用Array类的属性来对数组进行各种操作。数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充。ArrayList提供添加,删除和插入某一范围元素的方法,但在数组中,只能一次获取或设置一个元素。ArrayList提供将只读和原创 2020-06-05 23:06:09 · 2543 阅读 · 0 评论 -
C#数组(Array)精讲
一、数组的概念数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。数组中某个指定的元素是通过索引来访问的。所有的数组都是由连续的内存位置组成的,最低的地址对应第一个元素,最高的地址对应最后一个元素。二、声明数组1、方式一// 在数组声明的时候赋值int[] num= {1,2,3,4,5};注意:声明的时候,直接初始化,知道类型、长度和值2、方式二:定义数组的长度,没有赋值,元素默认值为0// 数组长度为5,数组元素默认值是原创 2020-06-05 22:52:06 · 3855 阅读 · 1 评论 -
深入理解C#中var关键字的用法
文章目录一、C# 中的var关键字二、使用var定义变量的特点三、示例讲解一、C# 中的var关键字var是3.5新出的一个定义变量的类型,其实也就是弱化类型的定义,var可代替任何类型,编译器会根据上下文来判断你到底是想用什么类型的,至于什么情况下用到var,我想就是你无法确定自己将用的是什么类型,就可以使用var,类似object但是效率比object高点。举个例子:假如我们现在要遍历一个数组,此时我们并不知道数组中存储的数据类型是什么,那么此时,我们使用var关键字,就很合适了。或者通俗的讲:原创 2020-06-05 22:50:36 · 14033 阅读 · 0 评论 -
C# 结构体(Struct)精讲
一、结构体的概念在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。二、使用结构体的示例为了定义一个结构体,您必须使用 struct 语句。struct 语句为程序定义了一个带有多个成员的新的数据类型。1、声明结构体//Pascal命名规则struct Per{ //里面的一些属性 public string name; public int age; public string sex;};原创 2020-06-04 23:03:04 · 7883 阅读 · 0 评论 -
C# 枚举(Enum)精讲
一、枚举的概念枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。二、使用枚举的示例1、首先我们声明一个枚举//声明一个枚举,表示性别enum Sex{ male, // 男 Female // 女}2、进行调用Sex sex = Sex.male;Console.WriteLine(sex);3、执行效果4、总结相信通过上面这个案例,我们可以发现,通过枚举获取数据,可以避免我原创 2020-06-04 22:25:19 · 3832 阅读 · 0 评论 -
C#中Console.Write()、Console.WriteLine()的区别
两者区别:Console.Write(); 输出到控制台中,且在最后位置不换行,参数至少有一个以上。Console.WriteLine();输出到控制台中,且在最后位置换行,有无参数均可,若没有参数,则为空行。原创 2020-06-04 21:10:21 · 859 阅读 · 0 评论