
dot net
文章平均质量分 62
主要是windows .net平台C#为主
__Benco
不负青春,不负梦;
不负韶华,不负心。
展开
-
使用反射访问特性(C# 和 Visual Basic)
如果该类具有其他特性,则按相似的方式构造其他特性对象。然后 GetCustomAttributes 返回 Author 对象和数组中的任何其他特性对象。之后就可以对此数组进行迭代,确定根据每个数组元素的类型所应用的特性,并从特性对象中提取信息。如果没有检索自定义特性的信息和对其进行操作的方法,则定义自定义特性并将其放置在源代码中就没有意义。主要方法是 GetCustomAttributes,它返回对象数组,这些对象在运行时等效于源代码特性。定义一个自定义特性,将其应用于若干实体并通过反射进行检索。原创 2022-09-28 12:49:20 · 135 阅读 · 0 评论 -
创建自定义特性(C# 和 Visual Basic)
构造函数的参数是自定义特性的定位参数。请注意 AttributeUsage 特性的用法,它使得 Author 特性仅在类和 struct(在 Visual Basic 中是 Structure)声明中有效。通过定义一个特性类,可以创建您自己的自定义特性。AttributeUsage 有一个命名参数 AllowMultiple,使用它可以使自定义特性成为一次性使用或可以使用多次的特性。在下面的代码示例中,创建了一个使用多次的特性。在下面的代码示例中,向某个类应用了同一类型的多个特性。原创 2022-09-28 12:45:50 · 163 阅读 · 0 评论 -
特性(C# 和 Visual Basic)
例如,[DllImport] 虽等效于 [DllImportAttribute],但 DllImportAttribute 才是该特性在 .NET Framework 中的实际名称。特性可以放置在几乎所有的声明中(但特定的特性可能限制在其上有效的声明类型)。在 C# 中,特性的指定方法为:将括在方括号中的特性名置于其应用到的实体的声明上方。特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集、类型、方法、属性等)相关联。许多特性都有参数,而这些参数可以是定位参数、未命名参数或命名参数。原创 2022-09-28 12:41:30 · 341 阅读 · 0 评论 -
反射(C# 和 Visual Basic)
反射提供了描述程序集、模块和类型的对象( Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了特性,可以利用反射来访问它们。C# 关键字 protected 和 internal 在 IL 中没有意义并且在反射 API 中不使用。IL 中对应的术语为“家族”和“程序集”。有关更多信息,请参见 检索存储在特性中的信息。执行后期绑定,访问在运行时创建的类型的方法。下面的示例使用反射获取已加载的程序集的完整名称。原创 2022-09-28 12:05:12 · 322 阅读 · 0 评论 -
不安全代码和指针(C# 编程指南)
在公共语言运行时 (CLR) 中,不安全代码是指无法验证的代码。C# 中的不安全代码不一定是危险的;只是其安全性无法由 CLR 进行验证的代码。因此,CLR 只对在完全受信任的程序集中的不安全代码执行操作。如果使用不安全代码,由您负责确保您的代码不会引起安全风险或指针错误。为了保持类型安全,默认情况下,C# 不支持指针算法。不过,通过使用 unsafe 关键字,可以定义可使用指针的不安全上下文。有关指针的更多信息,请参见主题 指针类型。原创 2022-09-27 20:49:41 · 197 阅读 · 0 评论 -
new 修饰符(C# 参考)
隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。在该例中,基类 BaseC 和派生类 DerivedC 使用相同的字段名 x,从而隐藏了继承字段的值。在此示例中,嵌套类隐藏了基类中同名的类。此示例演示了如何使用 new 修饰符来消除警告消息,以及如何使用完全限定名来访问隐藏的类成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new 修饰符修饰该成员。在不隐藏继承成员的声明中使用 new 修饰符将会生成警告。原创 2022-09-27 20:44:10 · 683 阅读 · 0 评论 -
多态性(C# 编程指南)
虽然列表中的每个对象都具有声明类型 Shape,但调用的将是运行时类型(该方法在每个派生类中的重写版本)。如果类 A 声明了一个虚拟成员,类 B 从 A 派生,类 C 从类 B 派生,则类 C 继承该虚拟成员,并且可以选择重写它,而不管类 B 是否为该成员声明了重写。如果使用类型为 C、B 或 A 的变量访问 D 的实例,对 DoWork 的调用将遵循虚拟继承的规则,即把这些调用传送到类 C 的 DoWork 实现。当派生类重写某个虚拟成员时,即使该派生类的实例被当作基类的实例访问,也会调用该成员。原创 2022-09-27 18:56:01 · 220 阅读 · 0 评论 -
使用 Override 和 New 关键字进行版本控制(C# 编程指南)
如果 override 关键字和 new 关键字均未指定,编译器将发出警告,并且派生类中的方法将隐藏基类中的方法。重写方法不被视为是在类上进行声明的,而是在基类上声明的方法的新实现。仅当 C# 编译器无法将方法调用与 Derived 上的原始方法匹配时,它才尝试将该调用与具有相同名称和兼容参数的重写方法匹配。当在类中指定方法时,如果有多个方法与调用兼容(例如,存在两种同名的方法,并且其参数与传递的参数兼容),则 C# 编译器将选择最佳方法进行调用。在 C# 中,派生类可以包含与基类方法同名的方法。原创 2022-09-27 18:40:26 · 195 阅读 · 0 评论 -
何时使用 Override 和 New 关键字(C# 编程指南)
在这种情况下,在 Minivan 类中声明的 ShowDetails 方法重写 Car 类中声明的 ShowDetails 方法,显示的说明描述微型面包车。ConvertibleCar 类的 ShowDetails 方法不被调用,无论对象的类型是 ConvertibleCar,如在 TestCars1 中,还是 Car,如在 TestCars2 中。要禁止显示警告,请向 DerivedClass 中的 Method2 定义添加 new 修饰符,如下面的示例所示: 可在 public 前后添加修饰符。原创 2022-09-27 18:28:47 · 727 阅读 · 0 评论 -
C# AsyncCallback 委托
For more information about asynchronous programming, see 使用 AsyncCallback 委托结束异步操作 and 使用 AsyncCallback 委托和状态对象 in 基于事件的异步模式 (EAP).下面的代码示例演示如何在Dns类中使用异步方法检索用户指定计算机的域名系统(Dns)信息。对于每个请求DNS信息的异步请求,都会调用此方法一次。程序集: mscorlib(在 mscorlib.dll 中)引用在相应异步操作完成时调用的方法。原创 2022-09-24 18:21:31 · 662 阅读 · 0 评论 -
使用委托(C# 编程指南)
如果委托使用引用参数,引用将按相反的顺序传递到所有这三个方法,并且一种方法进行的任何更改都将在另一种方法上见到。当方法引发未在方法内捕获到的异常时,该异常将传递到委托的调用方,并且不会调用调用列表中的后续方法。若要注册一个事件,接收方需要创建用于处理该事件的方法,然后为该方法创建委托并将委托传递到事件源。调用方传递到委托的参数将传递到该方法,并且委托会将方法的返回值(如果有)返回到调用方。委托不知道除其所封装方法以外的实例类型,因此委托可以引用任何类型的对象,只要该对象上有与委托签名匹配的方法。原创 2022-09-20 11:11:23 · 441 阅读 · 0 评论 -
委托(C# 编程指南)
C# 2.0 版引入了 匿名方法的概念,此类方法允许将代码块作为参数传递来代替单独定义的方法。你可以创建一个自定义方法,当发生特定事件时,某个类(如 Windows 控件)就可以调用你的方法。将方法作为参数进行引用的能力使委托成为定义回调方法的理想选择。delegate 是表示对具有特定参数列表和返回类型的方法的引用的类型。在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。可将任何可访问类或结构中与委托类型匹配的任何方法分配给委托。在方法重载的上下文中,方法的签名不包括返回值。原创 2022-09-20 11:00:47 · 182 阅读 · 0 评论 -
属性(C# 编程指南)
属性是一种成员,它提供灵活的机制来读取、写入或计算私有字段的值。属性可用作公共数据成员,但它们实际上是称为“访问器”的特殊方法。该类在内部以秒为单位存储时间,但是名为 Hours 的属性允许客户端以小时为单位指定时间。Hours 属性的访问器执行小时与秒之间的转换。get 属性访问器用于返回属性值,而 set 访问器用于分配新值。这些访问器可以具有不同的访问级别。对于不需要任何自定义访问器代码的简单属性,请考虑选择使用自动实现的属性的选项。不实现 set 访问器的属性均为只读。原创 2022-09-20 10:48:10 · 233 阅读 · 0 评论 -
字段(C# 编程指南)
如果您拥有类 T 和实例字段 F,可以创建类型 T 的两个对象,并修改每个对象中 F 的值,这不影响另一对象中的该值。相比之下,静态字段属于类本身,在该类的所有实例中共享。static readonly 字段非常类似于常数,只不过 C# 编译器不能在编译时访问静态只读字段的值,而只能在运行时访问。若要访问对象中的字段,请在对象名称后面添加一个句点,然后添加该字段的名称,比如 objectname.fieldname。在类块中通过指定字段的访问级别,然后指定字段的类型,再指定字段的名称来声明这些字段。原创 2022-09-20 10:44:09 · 2464 阅读 · 0 评论 -
访问修饰符(C# 编程指南)
结构成员,包括嵌套的类和结构,可以声明为公共的、 内部的,或私人的。类成员(包括嵌套的类和结构)可以为公共的、受保护的内部、受保护的、内部的或私有的。从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。不是所有访问修饰符都可以在所有上下文中由所有类型或成员使用,在某些情况下类型成员的可访问性受到其包含类型的可访问性的限制。直接在命名空间中声明的类和结构(即,没有嵌套在其他类或结构中的类和结构)可以是公共类和结构,也可以是内部类和结构。原创 2022-09-19 18:24:06 · 169 阅读 · 0 评论 -
C# 关键字学习手记
C# 关键字学习手记原创 2022-07-21 17:58:36 · 473 阅读 · 0 评论 -
cmd控制台窗体大小设置
cmd控制台窗体大小设置原创 2022-07-09 18:18:27 · 5559 阅读 · 0 评论 -
C# 注释语法
C# 注释语法原创 2022-06-22 20:09:19 · 557 阅读 · 0 评论 -
Visual Studio2022创建setup项目
Visual Studio2022创建setup项目原创 2022-06-14 22:05:51 · 6116 阅读 · 6 评论 -
C# Form按ESC关闭窗体
1.将Form窗体属性KeyPreview改True;2.添加Form窗体KeyPress事件:private void Form1_KeyPress(object sender, KeyPressEventArgs e){ if (e.KeyChar == (char)Keys.Escape) { this.Close(); Application.Exit(); }}以上2步即可完美解决Form窗体按Esc键关闭窗体。...原创 2022-05-31 15:36:29 · 1216 阅读 · 0 评论 -
C#从入门到精通
C#从入门到精通第一篇基础知识第一章初始C#及其开发环境1.1C#概述1.1.1C#语言及其特点1.1.2初始.Net Framwwork1.1.3C#与.NET框架1.1.4C#的应用领域1.2安装与卸载Visual studio 20171.2.1安装Visual studio 2017必备条件1.2.2安装Visual studio 20171.2.3卸载Visual studio 20171.3熟悉Visual studio 2017开发环境1.3.1创建项目1.3.2原创 2022-04-09 19:28:30 · 5609 阅读 · 5 评论 -
C# 常用方法记录
C#常用方法记录,仅是个人使用记录。一、“richtextbox ”滚动条定位到当前光标处 richTextBox1.AppendText("输出一行消息\r\n"); richTextBox1.ScrollToCaret();二、关闭窗口或退出系统 1.this.Close(); //只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2.Application.Exit()...原创 2022-03-22 11:11:31 · 313 阅读 · 0 评论