![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
.NET
M守护神
这个作者很懒,什么都没留下…
展开
-
基于.NET的Excel开发:单元格区域的操作(读取、赋值、边框和格式)
引用using Excel = Microsoft.Office.Interop.Excel; 定义1 Excel.ApplicationClass app;2 Excel.Workbooks books;3 Excel.Workbook book;4 Excel.Sheets sheets;5 Excel.Worksheet sheet;6原创 2014-07-02 12:00:34 · 2824 阅读 · 0 评论 -
.NET Attributes
Attributes 特性 公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。 定制特性attribute,本质上是一个类,其为目标原创 2014-04-24 15:09:06 · 391 阅读 · 0 评论 -
.NET LINQ基本查询操作
获取数据源 在 LINQ 查询中,第一步是指定数据源。像在大多数编程语言中一样,在 C# 中,必须先声明变量,才能使用它。在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 (customers) 和范围变量 (cust)。范围变量类似于 foreach 循环中的迭代变量,但在查询表达式中,实际上不发生迭代。执行查询时,范围变量将用作对 customers 中的每原创 2014-04-24 15:03:39 · 593 阅读 · 0 评论 -
.NET LINQ查询语法与方法语法
LINQ 查询语法与方法语法 通过使用 C# 3.0 中引入的声明性查询语法,介绍性 LINQ 文档中的多数查询都被编写为查询表达式。 但是,.NET 公共语言运行时 (CLR) 本身并不具有查询语法的概念。 因此,在编译时,查询表达式会转换为 CLR 确实了解的内容:方法调用。 这些方法称为“标准查询运算符”,它们具有如下名称:Where、Select、GroupBy、J原创 2014-04-24 14:59:57 · 518 阅读 · 0 评论 -
.NET 数据类型之字符串(String)
字符串 表示文本,即一系列 Unicode 字符。字符串是 Unicode 字符的有序集合,用于表示文本。 String 对象是 System.Char 对象的有序集合,用于表示字符串。 String 对象的值是该有序集合的内容,并且该值是不可变的(即,为只读)。String 对象的最大大小内存中的为 2 GB 或大约 10 亿个字符。关键字 string原创 2014-04-25 09:27:41 · 583 阅读 · 0 评论 -
.NET 数据类型之类(Class)
类 类是 C# 中功能最为强大的数据类型。像结构一样,类也定义了数据类型的数据和行为。然后,程序员可以创建作为此类的实例的对象。与结构不同,类支持继承,而继承是面向对象编程的基础部分。构造函数 构造函数是在创建给定类型的对象时执行的类方法,是在运行时调用的而非编译时,包括实例构造函数和静态构造函数。构造函数与类名相同,且不能有返回值。构造原创 2014-04-25 09:26:51 · 714 阅读 · 0 评论 -
.NET 方法概述
方法 “方法”是包含一系列语句的代码块。在 C# 中,每个执行指令都是在方法的上下文中完成的。方法在类或结构中声明,声明时,声明时需要指定访问级别、返回值、方法名称以及任何方法参数。方法参数放在括号中,并用逗号隔开。空括号表示方法不需要参数。方法可以有或没有参数,也可以有或没有返回值。Main方法 Main 方法是控制台应用程序或窗口应用程序的入口点。M原创 2014-04-25 09:16:47 · 476 阅读 · 0 评论 -
.NET 属性
属性 属性又称访问器,它是这样的成员:它们提供灵活的机制来读取、编写或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称为“访问器”的特殊方法,访问器与方法一样可以被重写,这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。作用 属性使类能够以一种公开的方法获取和设置值,同时隐藏实现或验证代码。它们可在允许更改前验证数据,原创 2014-04-25 09:16:04 · 484 阅读 · 0 评论 -
.NET 索引器
索引器 索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。特性索引器使得对象可按照与数组相似的方法进行索引。代码示例class SampleCollection{ private T[] arr = new T[100]; public原创 2014-04-25 09:15:09 · 425 阅读 · 0 评论 -
.NET 泛型方法
泛型方法 泛型方法是使用类型参数声明的方法。static void Swap(ref T lhs, ref T rhs){ T temp; temp = lhs; lhs = rhs; rhs = temp;}类型推断 相同的类型推断规则也适用于静态方法以及实例方法。编原创 2014-04-25 09:09:14 · 541 阅读 · 0 评论 -
.NET Lambda
Lambda概述 lambda 表达式是一个可用于创建委托或表达式树类型的匿名函数。 通过使用 lambda 表达式,可以可作为参数或返回编写本地函数,该函数调用的值。 Lambda 表达式用于编写 LINQ 查询表达式特别有用。 若要创建 lambda 表达式,则在 lambda 运算符 =>的左侧指定输入参数 (如果有),因此,您放置表达式或语句在另一端块。原创 2014-04-24 16:26:36 · 514 阅读 · 0 评论 -
.NET 多线程
多线程 在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是用户界面。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。基础概念进程 进程是应用程序的实例要使用的资源的一个集合。每个应用程序原创 2014-04-24 16:18:00 · 667 阅读 · 0 评论 -
.NET 运算符
运算符 C# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。通常允许对枚举进行整型运算,例如 ==、!=、、=、binary +、binary -、^、&、|、~、++、-- 和 sizeof()。此外,很多运算符可被用户重载,由此在应用到用户定义的类型时更改这些运算符的含义。 运算符类别运算符基本原创 2014-04-25 09:23:10 · 601 阅读 · 0 评论 -
.NET 扩展方法
扩展方法 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。 通常,建议您只在不得已的情况下才实现扩展方法,并谨慎地实现。 只原创 2014-04-25 09:06:30 · 562 阅读 · 0 评论 -
.NET 预处理器指令
C# 预处理器指令 虽然编译器没有单独的预处理器,但在处理该节中描述的指令时如同存在一个单独的预处理器;这些指令用于辅助条件编译。 与 C 和 C++ 指令不同,不能使用这些指令创建宏。预处理器指令必须是行上的唯一指令。#if 如果 C# 编译器遇到最后面跟有 #endif 指令的 #if 指令,则仅当指定的符号已定义时,它才会编译这两个指令之间原创 2014-04-24 16:48:01 · 504 阅读 · 0 评论 -
.NET 委托
委托类型定义 C#编译器处理委托时,先自动产生一个派生自System.MulticastDelegate的密封类。这个类与它的基类System.Delegate一起为委托提供必要的基础设施,以维护以后将要调用的方法列表。它含有3个编译器生成的方法,这3个方法的参数与返回值基于委托的声明。 public sealed class DelegateN原创 2014-04-24 16:28:57 · 338 阅读 · 0 评论 -
.NET 分部方法
分部方法 分部类或结构可以包含分部方法。 类的一个部分包含方法的签名。 可以在同一部分或另一个部分中定义可选实现。 如果未提供该实现,则会在编译时移除方法以及对方法的所有调用。 分部方法使类的某个部分的实施者能够定义方法(类似于事件)。 类的另一部分的实施者可以决定是否实现该方法。 如果未实现该方法,编译器将移除方法签名以及对该方法的所有调用。 调用该方法,包括调用中的原创 2014-04-25 09:05:38 · 792 阅读 · 0 评论 -
.NET 数据类型之匿名类型(var)
匿名类型 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。 类型名由编译器生成,并且不能在源代码级使用。 每个属性的类型由编译器推断。可通过使用 new 运算符和对象初始值创建匿名类型。限制条件没有控制匿名类型的名字。语法var v = new { Amount = 108,原创 2014-04-25 09:24:05 · 652 阅读 · 0 评论 -
.NET通过RFC读取SAP数据
本篇文章中我主要讲的是.NET如何通过RFC从SAP中读取数据。为了功能的可复用性,我将调用RFC的代码从业务层中分离出来单独建立在一个namespace中。 当然除了需要我们自己编写代码以外,还需要引用SAP提供的程序集文件(sapnco.dll、sapnco_utils.dll),在代码文件需要引用相应的命名空间(using SAP.Middleware.Connector;)。原创 2014-05-22 10:24:52 · 699 阅读 · 0 评论 -
.NET LINQ数据转换
使用 LINQ 进行数据转换 语言集成查询 (LINQ) 不仅可用于检索数据, 而且还是一个功能强大的数据转换工具。 通过使用 LINQ 查询,您可以将源序列用作输入,并采用多种方式修改它以创建新输出序列。 您可以通过排序和分组来修改序列本身,而不必修改元素本身。但是,LINQ 查询的最强大功能可能在于它能够创建新类型。 这一功能在 select 子句中实现。 例如,可以执行下原创 2014-04-24 15:01:10 · 543 阅读 · 0 评论 -
.NET 数据类型之指针类型(type*)
指针类型 在不安全的上下文中,类型可以是指针类型以及值类型或引用类型。 指针类型不继承 object,并且指针类型与 object 之间不存在转换。此外,装箱和取消装箱不支持指针。但是,允许在不同指针类型之间以及指针类型与整型之间进行转换。 当在同一个声明中声明多个指针时,* 仅与基础类型一起使用,而不是作为每个指针名称的前缀。 指针不能指向引用或包原创 2014-04-25 09:49:50 · 582 阅读 · 0 评论 -
.NET 数据类型之动态类型(Dynamic)
Dynamic 在通过 dynamic 类型实现的操作中,该类型的作用是绕过编译时类型检查, 改为在运行时解析这些操作。 dynamic 类型简化了对 COM API(例如 Office Automation API)、动态 API(例如 IronPython 库)和 HTML 文档对象模型 (DOM) 的访问。 在大多数情况下,dynamic 类型与 object 类原创 2014-04-25 09:26:02 · 1203 阅读 · 0 评论 -
.NET 异常处理
异常处理 可以使用 TryCatch 活动处理方法执行期间引发的异常。 可以对这些异常进行处理,或者使用 Rethrow 活动重新引发异常。 Finally 节中的活动在 Try 节或 Catches 节完成时执行。 捕获异常后进行记录并保证程序可以继续正常使用。异常处理四要素一个表示异常详细信息的类类型一个向调用者引发异常类实例的成员调用者原创 2014-04-24 16:45:46 · 290 阅读 · 0 评论 -
.NET 泛型
泛型 泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险。 使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性原创 2014-04-24 16:22:26 · 384 阅读 · 0 评论 -
.NET LINQ概述
LINQ 语言集成查询 (LINQ) 是 Visual Studio 2008 中引入的一组功能,它在对象领域和数据领域之间架起了一座桥梁。可为 C# 和 Visual Basic 语言语法提供强大的查询功能。 LINQ 引入了标准、易学的数据查询和更新模式,该技术可以扩展为几乎支持任何类型的数据存储。Visual Studio 包含 LINQ 提供程序的程序集,借助这些程原创 2014-04-24 15:04:09 · 712 阅读 · 0 评论 -
.NET using关键字
引用命名空间 using System;为命名空间或类型创建别名 using aClass = NameSpace1.MyClass;using语句 定义一个范围,在范围结束时处理对象。不过该对象必须实现了IDisposable接口。其功能和t原创 2014-04-25 09:04:53 · 352 阅读 · 0 评论 -
.NET 事件
事件概述 在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。特点发行者确定何时引发事件,订户确定执行何种操作来响应该事件。一个事件可以有多个订户。一个订户可处理来自多原创 2014-04-24 16:27:20 · 483 阅读 · 0 评论 -
.NET读取Office文件内容(word、excel、ppt)
引用命名空间using Microsoft.Office.Core;using Word = Microsoft.Office.Interop.Word;using Excel = Microsoft.Office.Interop.Excel;using PowerPoint = Microsoft.Office.Interop.PowerPoint;Word文件的读取 publ原创 2014-04-23 13:34:01 · 1212 阅读 · 0 评论 -
.NET 基础语句
分支语句 三元运算符(……)?b:c值可能为空时的取值方式(s == null) ? "" :s;if原创 2014-04-25 09:17:54 · 453 阅读 · 0 评论 -
.NET 面向对象基础
封装 对象的内部数据不应该从对象的实例直接访问,如果调用者想改变对象的状态就要使用访问方法(getter)和修改方法(setter),封装提供了一种保护状态数据完整性的方法,可用于验证输入数据是否原创 2014-04-24 16:46:41 · 339 阅读 · 0 评论 -
.NET LINQ查询操作中的类型关系
LINQ 查询操作中的类型关系 若要有效编写查询,您应该了解完整的查询操作中的变量类型是如何全部彼此关联的。 如果您了解这些关系,就能够更容易地理解文档中的 LINQ 示例和代码示例。 另外,还能了解在使用 var 隐式对变量进行类型化时的后台操作。 LINQ 查询操作在数据源、查询本身及查询执行中是强类型的。 查询中变量的类型必须与数据源中元素的类型和 foreach原创 2014-04-24 15:00:31 · 495 阅读 · 0 评论 -
.NET LINQ标准查询运算符
标准查询运算符概述 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法。 大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了 IEnumerable 接口或 IQueryable 接口。 标准查询运算符提供了包括筛选、投影、聚合、排序等功能在内的查询功能。 共有两组 LINQ 标准查询运算符,一组在类型为 IEnumerable 的原创 2014-04-24 14:59:11 · 647 阅读 · 0 评论 -
.NET 迭代器
迭代器 迭代器是方法、get 访问器或运算符,它使您能够在类或结构中支持 foreach 迭代,而不必实现整个 IEnumerable 接口。您只需提供一个迭代器,即可遍历类中的数据结构。当编译器检测到迭代器时,它将自动生成 IEnumerable 或 IEnumerable 接口的 Current、MoveNext 和 Dispose 方法。 迭代器是可以返回相同类型原创 2014-04-25 09:14:31 · 431 阅读 · 0 评论 -
.NET base与this
base base 关键字用于从派生类中访问基类的成员常用用途调用基类上已被其他方法重写的方法。指定创建派生类实例时应调用的基类构造函数。备注 基类访问只能在构造函数、实例方法或实例属性访问器中进行。从静态方法中使用 base 关键字是错误的。this this 关键字引用类的当前实例。常用用途原创 2014-04-25 09:05:14 · 476 阅读 · 0 评论 -
.NET 接口
接口 接口是一组抽象成员的集合,表示某个类或结构可以选择去实现的行为,描述的是可属于任何类或结构的一组相关功能。接口方法的实现是在实现接口的类中完成的,实现接口的类可以显式实现该接口的成员,显式实现的成员不能通过类实例访问,而只能通过接口实例访问。接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型。 它不能包含静态成员。 接口成员是自动公开的,且不能包含任何访问修饰符原创 2014-04-24 16:25:18 · 517 阅读 · 0 评论 -
.NET LINQ 元素操作
元素操作 元素操作从一个序列返回单个特定元素。方法方法名说明C# 查询表达式语法Visual Basic 查询表达式语法更多信息ElementAt返回集合中指定索引处的元素。不适用。不适用。原创 2014-04-24 08:37:08 · 379 阅读 · 0 评论 -
.NET LINQ 转换数据类型
转换数据类型 转换方法更改输入对象的类型。 LINQ 查询中的转换运算可用于各种应用程序。下面是一些示例:Enumerable.AsEnumerable 方法可用于隐藏类型的标准查询运算符的自定义实现。方法方法名说明C# 查询表达式语法Vi原创 2014-04-24 08:36:13 · 2712 阅读 · 0 评论 -
.NET 对象生命周期
GC 垃圾回收 .NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托原创 2014-04-24 08:34:07 · 414 阅读 · 0 评论 -
.NET 清理非托管资源
Dispose 类型的 Dispose 方法应释放它拥有的所有资源。它还应该通过调用其父类型的 Dispose 方法释放其基类型拥有的所有资源。该父类型的 Dispose 方法应该释放它拥有的所有资源并同样也调用其父类型的 Dispose 方法,从而在整个基类型层次结构中传播此模式。若要确保始终正确地清理资源,Dispose 方法应该可以被多次调用而不引发任何异常。Dispose原创 2014-04-24 08:33:12 · 453 阅读 · 0 评论 -
.NET 反射概述
反射 反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。 获取变量类型int i = 42;System.Type type = i.GetType();原创 2014-04-24 08:32:03 · 419 阅读 · 0 评论