自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 收藏
  • 关注

原创 C#面:阐述什么是泛型委托

在上面的代码中, MyGenericDelegate 是一个泛型委托,它接受一个 T 类型参数 ,并且返回类型也是 T。通过使用泛型委托,我们可以编写更加通用的代码,而不需要为每种类型都定义一个单独的委托。通过泛型委托,我们可以在编写代码时不需要指定具体的参数类型,而是在使用委托时再指定参数类型。在 C# 中,泛型委托的定义方式与普通委托类似,只是在委托的参数列表中使用了泛型类型参数。泛型委托是 C# 中一种强大的特性,它允许我们定义一个可以接受任意类型参数的委托。

2024-04-19 10:57:19 522

原创 C#面:.NET默认的委托类型有哪几种?

这些是C# .NET中最常用的默认委托类型,它们提供了一种方便的方式来定义和使用委托。当然,也可以自定义委托类型来满足特定的需求。

2024-04-19 10:55:27 321

原创 C#面:如何自定义委托

在 C# 中,可以通过自定义委托来定义一种特定的方法签名,以便在需要时可以将其作为参数传递给其他方法或事件(人话就是:将方法作为参数进行传递)。上述代码创建了一个名为 myDelegateAddNumbers 的委托实例,并将方法作为参数传递给委托实例。上述代码定义了一个名为 MyDelegateint 的委托类型,它接受两个类型的参数并且没有返回值。上述代码定义了一个名为 AddNumbersint 的方法,它接受两个类型的参数并且没有返回值。创建委托实例并将方法作为参数传递给委托实例。

2024-04-17 11:20:38 297

原创 C#面:如何避免类型转换时的异常?

在 C# 中,可以通过使用类型转换操作符或者类型转换方法来进行类型转换。

2024-04-17 11:15:37 349

原创 C#面:用 foreach 和 ref 为一个数组中的每个元素加 1

通过使用 ref 关键字,我们可以直接修改数组中的元素的值。在循环体内部,我们将每个元素加1。

2024-04-16 15:29:06 399

原创 C#面:使用 IEnumerable 实现斐波那契数列生成

IEnumerable 接口提供了一个迭代器方法 GetEnumerator(),通过实现该方法可以返回一个迭代器对象,该对象可以用于遍历集合中的元素。通过使用yield return,我们可以按需生成序列的元素,而不需要一次性生成所有元素。斐波那契数列(Fibonacci sequence),又称黄金分割数列 [1],因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……

2024-04-16 15:28:17 344

原创 C#面:获取整数 List 中最大值而不使用Max方法

【代码】C#面:获取整数 List 中最大值而不使用Max方法。

2024-04-15 15:51:09 192

原创 C#面:如有50万个int类型的数字,现在需要判断⼀下⾥⾯是否存在重复的数字,请简要说⼀下思路

这个问题有很多解决的方法,对于这个提问的出发点有很多不同的看法,个人认为,到底如何回答或者处理,没有标准答案,也许也并不需要。我觉得由一个问题引发的讨论和思考,才是问题本身的价值。有的人说这个问题本身就没有意义。

2024-04-15 15:49:39 369

原创 C#面:泛型的主要约束和次要约束是什么

在 C# 中,泛型的约束是用来限制泛型类型参数的行为和能力的。主要约束和次要约束是两种不同的约束方式。

2024-04-14 15:00:21 325

原创 C#面:介绍 IList 与 List 的区别

IList 接口是一个抽象接口,定义了一组用于操作列表的方法和属性。它是 System.Collections 命名空间中的一部分,可以被其他类实现。List 类是 IList 接口的一个具体实现,它提供了 IList 接口中定义的所有方法和属性的具体实现。List 类位于 System.Collections.Generic 命名空间中。IList 接口是一个抽象的列表操作接口,可以被其他类实现。List 类是 IList 接口的一个具体实现,提供了更多的功能和性能优化。

2024-04-14 14:58:13 453

原创 C#面:介绍 Hashtable 和 Dictionary的区别

如果需要一个类型安全、性能较好且不需要存储 null 键和 null 值的键值对集合,推荐使用Dictionary。如果需要一个可以存储任意类型的键和值,并且不关心性能和类型安全性的话,可以使用Hashtable。

2024-04-13 16:16:27 368

原创 C#面:介绍 ArrayList 与 Array 的区别

Array 是一种固定长度的数据结构,而 ArrayList 是一种可变长度的数据结构。

2024-04-13 16:15:01 463

原创 C#面:List , Set ,Map 是否继承自 Collection 接口?

在C#中,List、Set 和 Map 并不直接继承 Collection 接口。它们分别属于不同的命名空间和类。

2024-04-12 15:24:56 374

原创 C#面:Collection 和 Collections 的区别

所以,Collection 是一个抽象基类,用于实现自定义集合类;而 Collections 是一个包含常用集合类的类库。在C#中,Collection 和 Collections 是两个不同的类库。

2024-04-12 15:23:48 516

原创 C#面:如何创建一个自定义异常?

【代码】C#面:如何创建一个自定义异常?

2024-04-11 14:35:56 337

原创 C#面:ASP.NET 中的控件有哪些类型

ASP.NET是一种用于构建Web应用程序的开发框架,它提供了丰富的控件类型来帮助开发人员构建交互性和动态性的Web页面。这些控件类型可以根据需要进行组合和定制,以满足不同的业务需求。同时,ASP.NET还支持自定义控件的开发,开发人员可以根据具体需求创建自己的控件类型。

2024-04-11 14:33:43 584

原创 C#面:如何以较小的内存代价保存 Type、Field 和 Method 信息

可以使用这些类的对象来保存字段和方法的信息。例如,可以使用 Type 类的 GetFields() 和 GetMethods() 方法获取一个类型的所有字段和方法的 FieldInfo 和 MethodInfo 对象,并将它们保存在变量中。例如,可以使用 Type 类的 GetMembers() 方法获取一个类型的所有成员的 MemberInfo 对象,并将它们保存在变量中。需要注意的是,保存 Type、Field 和 Method 信息可能会占用一定的内存空间,具体取决于保存的信息数量和大小。

2024-04-09 14:41:21 354

原创 C#面:什么链式委托

当我们调用 calculate(5) 时,委托实例会按照添加的顺序依次调用这三个方法,并将每个方法的返回值传递给下一个方法。最后,打印出最终的结果。然后创建了一个 Calculate 委托类型的实例 calculate ,并依次将这三个方法添加到委托实例中。链式委托是指将多个委托实例连接在一起,形成一个委托链,使得多个方法可以按照一定的顺序依次被调用。当调用链式委托时,每个委托实例都会按照其添加的顺序被依次调用。在C#中,可以使用"+"运算符来连接多个委托实例,形成一个新的委托实例。

2024-04-09 14:39:35 613

原创 C#面:在 System.Object 中定义的三个比较方法有何异同

ReferenceEquals() 方法比较的是两个对象的引用是否相等。静态 Equals() 方法首先比较两个对象的引用,然后调用第一个对象的实例 Equals() 方法进行比较。实例 Equals() 方法是每个类的实例方法,用于比较当前对象与另一个对象是否相等,可以被子类重写以提供自定义的相等比较逻辑。

2024-04-08 14:05:20 383

原创 C#面:如何使用 IFormattable 接口实现格式化输出

需要注意的是,实现 IFormattable 接口并不会自动应用于所有的 ToString 方法调用。需要显式地调用对象的 ToString 方法,并传入格式字符串和格式化提供程序。在方法中,可以根据提供的格式字符串和格式化提供程序 (ToStringformatProvider) 来决定如何格式化输出。可以使用标准的格式字符串,也可以自定义格式字符串。在上面的示例中,我们使用了标准的格式字符串"F",并传入了当前的区域设置作为格式化提供程序。

2024-04-08 14:01:56 276

原创 C#面: .NET 中 Application.Exit 和 Form.Close 有什么不同

需要注意的是,当调用Form.Close() 方法关闭窗体时,如果该窗体有任何子窗体,它们也会被关闭。此外,Form.Close() 方法还会触发 Form.FormClosing 和Form.FormClosed 事件,可以在这些事件中执行一些清理操作。在.NET中,Application.Exit 和 Form.Close 都是用于关闭应用程序或窗体的方法,但它们之间有一些不同之处。

2024-04-07 21:08:25 557

原创 C#面:在 .NET 中如何取消一个窗体的关闭

在上面的代码中,我们重写了窗体的 Closing 事件,并将 CancelEventArgs 的 Cancel 属性设置为true,表示取消窗体的关闭。可以在事件处理程序中添加逻辑代码,例如询问用户是否真的要关闭窗体。注意,如果使用的是 Windows Forms 应用程序,需要手动将窗体的 Closing 事件与事件处理程序关联起来。这样,当用户尝试关闭窗体时,就会触发 Form1_Closing 事件处理程序。在.NET中,可以通过重写窗体的 Closing 事件来取消窗体的关闭。

2024-04-07 21:07:28 374

原创 C#面:描述一下 C# 中索引器的实现过程,是否只能根据数字进行索引?

索引参数可以是一个或多个,可以是任何有效的数据类型。需要注意的是,C#中的索引器不仅限于使用数字进行索引,还可以使用其他类型作为索引。在上面的示例中,我们定义了一个名为 MyCollection 的类,并在其中定义了一个索引器。该索引器接受一个整数类型的索引参数,并返回或设置对应位置的字符串元素。索引器是一种特殊的属性,它允许通过使用索引来访问类或结构中的元素。索引器可以像访问数组一样使用,通过在方括号内指定索引来获取或设置元素的值。使用该索引器时,可以像访问数组一样使用方括号来获取或设置元素的值。

2024-04-03 14:32:58 326

原创 C#面:.NET 中读写 XML 的类归属于哪些命名空间

除了 System.Xml 命名空间,还有一些其他命名空间也提供了一些与 XML 相关的类和接口,例如System.Xml.Linq 命名空间提供了一些用于处理 XML 的 LINQ to XML 类。在 .NET 中,读写 XML 的类主要归属于 System.Xml 命名空间。

2024-04-03 14:31:38 555

原创 C#面:有几种连接到数据库的方式,请列举出来并分别说明它们可以连接哪些数据库

ADO.NET 是 .NET Framework 提供的一种数据访问技术,可以连接多种类型的数据库,包括但不限于SQL Server、Oracle、MySQL 等。通过 ADO.NET 连接,可以使用各种提供程序(如SqlClient、OracleClient、OleDb等)来连接不同的数据库。

2024-03-31 21:46:44 343

原创 C#面:简述这个命令是做什么的:gacutil /l | find /i “system”

全局缓存工具,gacutil /l列出全局程序集缓存的内容。列出全局程序集缓存(Global Assembly Cache,GAC)中包含关键字"system"的程序集。“system” (带单引号的字符串): 是要查找的关键字,这里是指查找包含关键字"system"的程序集。gacutil :是一个用于管理全局程序集缓存的工具。/l :(大写 i )是"gacutil"命令的一个选项,表示列出全局程序集缓存中的程序集。|:(竖杠) 是一个管道操作符,用于将前一个命令的输出作为后一个命令的输入。

2024-03-31 21:45:39 354

原创 C#面:一个进程可以访问的Windows地址空间有多大?是否等于系统的虚拟内存大小吗?这两方面将对系统的设计产生什么样的影响 ?

一个进程可以访问的Windows地址空间大小取决于操作系统的位数。

2024-03-30 17:08:28 524

原创 C#面:虚函数和抽象函数的区别

虚函数:在基类中使用 virtual 关键字定义,可以在派生类中被重写。抽象函数:在抽象类或接口中使用abstract 关键字定义,必须在派生类中被实现。

2024-03-30 17:05:52 515

原创 C#面:简述抽象函数(方法)

C#中的抽象函数是一种特殊类型的函数,它只有方法的声明,没有具体的实现代码。抽象函数必须在抽象类或接口中声明,需要使用 abstract 关键字进行修饰。抽象函数的主要作用是定义一组方法的规范,而不关心具体的实现细节。它只定义了方法的名称、参数列表和返回类型,具体的实现由继承抽象类或实现接口的子类来完成。

2024-03-29 10:39:03 300

原创 C#面:使用什么语句引发异常

引发异常的目的是在程序执行过程中遇到错误或异常情况时,提供一种通知和处理的机制。当语句执行时,程序会立即跳转到最近的异常处理代码块(例如 throwtry-catch 块)。注意,如果没有适当的异常处理机制,引发的异常将会导致程序终止。因此,在引发异常之前,应该确保有相应的异常处理代码来捕获和处理异常。在上面的代码中,创建了一个新的异常对象 new Exception("异常信息"),并将其引发。可以使用 throw 语句以程序方式引发异常。用于在代码中显式地引发异常。

2024-03-29 10:37:07 332

原创 C#面:选择题:关于数组下标越界

数组下标越界检查是在运行时进行的,如果我们尝试访问一个超出数组边界的索引位置,C# 将会抛出一个 IndexOutOfRangeException 异常。C)在C#中,程序运行时,数组下标越界是否产生异常由用户确定。B)在C#中,程序运行时,数组一下标越界也不会产生异常。D)在C#中,程序运行时,数组下标越界一定会产生异常。A)在C#中,编译时对数组下标越界将作检查。

2024-03-28 15:02:16 486

原创 C#面:选择题:关于异常

致命异常通常是由于严重的错误或者系统故障引起的,例如内存溢出、栈溢出、无法访问的地址等。这些异常无法被应用程序代码捕获和处理,因为它们会导致应用程序无法继续执行。但是,有一种异常称为"致命异常"(Fatal Exception),它是一种无法被捕获的异常。当发生致命异常时,程序会立即终止并退出。程序集: Microsoft.Web.Deployment.dll。在C#中,几乎所有的异常都可以被捕获和处理。提供部署异常期间引发的致命异常。D)在C#中有的异常不能被捕获。A)用户可以根据需要抛出异常。

2024-03-28 15:00:21 235

原创 C#面:选择题:关于try-catch-finally

然而,有一些情况下finally块可能不会执行,例如在执行try块中的代码时发生了无法恢复的错误,如栈溢出或者死循环。此外,如果在try块中使用了 Environment.FailFast() 方法,程序会立即终止,finally块也不会执行。catch块是可选的,但是如果使用了try块,那么至少要有一个相应的catch块或者finally块来处理异常。如果没有catch块来处理异常,那么异常将会被传播到调用堆栈的上一级,直到找到一个能够处理该异常的catch块或者程序终止。C)catch块也是可选的。

2024-03-27 11:51:13 201

原创 C#面:选择题:在方法 MyFunc 内部的 try…catch 语句中,如果在try代码块中发生异常,并且在当前的所有catch块中都没有找到合适的catch块,会怎样处理

如果在try代码块中发生异常,并且在当前的所有 catch 块中都没有找到合适的catch块,则异常会被传递到上一级的调用栈中,直到找到一个合适的 catch 块或者到达应用程序的顶层。如果在整个调用栈中都没有找到合适的catch块,则应用程序会崩溃,并且会生成一个未处理异常的错误报告。C).NET运行时继续在MyFunc的调用堆栈中查找提供该异常处理的过程。D).NET抛出一个新的“异常处理未找到”的异常。B).NET运行时马上强制退出该程序。A).NET运行时忽略该异常。

2024-03-27 11:50:12 187

原创 C#面:简单介绍 FileMode 枚举成员

C# 的 FileMode 枚举类型定义了在文件操作中使用的不同文件访问模式。

2024-03-26 14:23:27 419

原创 C#面:用 FileStream 打开一个文件时,为了控制该 FileStream 用于创建不存在的文件,应将其什么参数设置为Create

在上面的代码中,我们使用 FileStream 打开名为 “example.txt” 的文件,并将 FileMode 参数设置为 Create。如果该文件不存在,FileStream 会创建一个新的文件。当使用 FileStream 打开一个文件时,可以通过设置 FileMode 参数来控制 FileStream 的行为。如果想要创建一个不存在的文件,可以将 FileMode 参数设置为 Create。请注意,使用 Create 模式打开文件时,如果文件已经存在,它的内容将会被清空。

2024-03-26 14:22:33 371

原创 C#面:C# 中的预定义特性有哪些

特性是一种元数据,可以应用于程序元素(如类、方法或属性),以提供额外的信息。特性是一种元数据,可以应用于程序元素(如类、方法或属性),以提供额外的信息。[Obsolete]:用于标记已过时的代码或方法。[DllImport]:用于指定在C#代码中调用非托管函数的方法。[DllImport]:用于指定在C#代码中调用非托管函数的方法。[Serializable]:用于标记类,表示该类的对象可以被序列化为字节流,以便在网络或磁盘上进行传输或存储。[Conditional]:用于指定在特定条件下是否编译代码。

2024-03-25 13:24:38 631

原创 C#面:Type 类的属性有哪些

IsGenericTypeDefinition:判断类型是否为泛型类型定义。IsAbstract:判断类型是否为抽象类或抽象接口。IsGenericType:判断类型是否为泛型类型。IsPrimitive:判断类型是否为基本数据类型。IsValueType:判断类型是否为值类型。IsInterface:判断类型是否为接口。IsPublic:判断类型是否为公共类型。IsSealed:判断类型是否为密封类。IsArray:判断类型是否为数组。IsClass:判断类型是否为类。IsEnum:判断类型是否为枚举。

2024-03-25 13:23:42 983

原创 C#面:System.Reflection 空间的成员有哪些

除了上述类之外,System.Reflection 命名空间还包含了一些其他的类和接口,用于获取和操作程序集、模块、类型和成员的信息。这些成员提供了强大的反射功能,可以在运行时动态地获取和操作类型和成员的信息。System.Reflection 命名空间提供了一组类和接口,用于在运行时获取有关程序集、模块、类型、成员和其他对象的信息。

2024-03-24 14:29:59 249

原创 C#面:程序集的主版本号和次版本号

C# 程序集的版本号和次版本号是程序集的一部分,用于标识程序集的不同版本。版本号通常由四个部分组成:主版本号、次版本号、生成号和修订号。其中,主版本号和次版本号是最常用的两个部分。

2024-03-24 14:28:49 531

C#简易小工具科目三灯光模拟听写(济南版)

刚考完驾照,科目三一百分过。 练习科目三的时候教练放不知道从哪下载的语音,也练不了几遍,觉得很不踏实,于是回来写了一个简易的小工具,随机生成一组题目听写,听到语音三秒内点击相应的按钮,最后展示“考试”结果。 说明: 1. 真实考试是5秒内做出选择,我这里设定3秒; 2. 考试会有“嘀”一声,我这里没加; 3. 根据教练的音频总结最后一个是靠边停车的概率略大,所以直接写死了; 4. 非常简易,本着能用就行的原则做的; 5. 灯光并不难,写完工具也就记住了,用工具多刷刷求个踏实; 6. 科目三重在心态,祝备考的小伙伴们都顺利拿到驾照;

2023-06-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除