Explorer中点击Create a template Folder Shortcut按钮,选中创建好的文件夹 三、在文件夹上右键,New---->C# Template 四、正式编写,先来认识几个...:就是要Import的命名空间 再来看看一定自定义属性的写法 <%@ Property Name="NameSpace" Type="<em>System.String</em>" Default="Model" Category...Name:就是取的名字 Type:是这个属性的类型 Default:是这个属性的默认值 Categroy:分组名,这个在下面属性栏中有体现 Description:描述 如写了以上自定义属性,你就可以在开发工具的属性栏中见到...Template练手,把连接自符串放一个工具类中,模版名为:Step1_Utility.cst <%@ CodeTemplate Language="<em>C#</em>" TargetLanguage="<em>C#</em>" ResponseEncoding...:Namespace和Author属性 换F5生成,生成代码如下,一个最简单的模版就完成 using System; using System.Collections.Generic; using System.Linq
目录 1,反射的使用概述 1.1 什么是反射 1.2 反射可以做什么 1.3 Type 类 1.4 反射使用归类 1.4 Type 一些常用属性 2,获取 Type 2.1 获取 Type 类型 2.2...1,反射的使用概述 1.1 什么是反射 《C# 7.0 本质论》中: 反射是指对程序集中的元数据进行检查的过程。...1.4 反射使用归类 C# 中,一个类型,可有以下元素组成: 类型名、构造函数/参数、方法/方法参数、字段、属性、基类型、继承接口等。...`1 System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture...GetGenericArguments() 返回 Type 对象的数组,这些对象表示为构造类型提供的类型实参或泛型类型定义的类型形参。
还可以在教程部分的 C# 6 交互式探索中探索这些功能。 01 只读自动属性 只读自动属性提供了更简洁的语法来创建不可变类型。...此功能实现用于创建不可变类型的真正语言支持且使用更简洁和方便的自动属性语法。 02 自动属性初始化表达式 自动属性初始值设定项可让你在属性声明中声明自动属性的初始值。...FirstName; 在前面的示例中,如果 Person 对象是 null,则将变量 first 赋值为 null。 否则,将 FirstName 属性的值分配给该变量。 最重要的是?....无论 person 的值是什么,以下表达式均返回 string。 通常,将此构造与“null 合并”运算符一起使用,以在其中一个属性为 null 时分配默认值。...的左侧使用任何表达式(包括方法调用)。 06 字符串内插 使用 C# 6,新的字符串内插功能可以在字符串中嵌入表达式。
C#反射简介 反射(Reflection)是C#语言中一种非常有用的机制,它可以在运行时动态获取对象的类型信息并且进行相应的操作。...对象,然后输出了这个对象的FullName属性,也就是string类型的完全限定名称System.String。...myClass = (MyClass)Activator.CreateInstance(myClassType); // 设置对象属性值 PropertyInfo...myClassType.GetProperty("Name"); propName.SetValue(myClass, "Tom"); // 打印对象属性值...接着,我们利用 PropertyInfo 对象获取、设置对象的属性值,最后打印属性值。以上就是用反射机制在 C# 中创建对象的过程。 3、反射调用方法 使用反射可以在运行时动态地调用对象的方法。
在此之前,从该集合中获取最小或最大对象需要向下遍历树(或向上),调用每个元素的委托,并将返回值设置为当前元素的最小值或最大值,最终到达树的顶部或底部。调用该委托并传递对象意味着有相当多的开销。...另一种选择是使用System.Tuple作为返回类型,但它分配了一个对象,并且具有相当不友好的属性名称(Item1, Item2,…)。...c# 7和VB.NET 15添加了一个语言特性,可以从一个方法返回多个值。...),但大小有限(通常小于1 MB)。...我们需要获取一个System.String并返回一个新System.String的方法,即要处理的托管版本的子字符串。非托管/堆栈版本将使用char*(是的,一个指针!)
C#中string[]数组和list泛型的相互转换 【转】 1,从System.String[]转到List System.String[] str={"str...[] str=listS.ToArray(); 测试如下: using System; using System.Collections.Generic; using System.Linq; using...System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args...) { System.String[] sA = { "str","string1","sting2","abc"}; List<System.String...("sA[{0}]={1}",i,sA[i]); } sL = new List(sA); sL.Add("Hello!")
本文主要的是泛谈LINQ是啥?以及常见的用法大纲如下: LINQ的那些根基 LINQ的一些基本用法 LINQ的根基 IEnumerable和IEnumerator 为啥能够被foreach?...实际上,能够被foreach的对象,一定是实现了带有返回值的IEnumerator的GetEnumerator()方法的接口,而.NET内置的该接口则是IEnumerable,一般指的是IEnumerable...+WhereSelectListIterator`2[System.String,System.String] ExpressionType:System.Linq.Expressions.ConstantExpression...CAT DOG --------------- Expression:System.Linq.Enumerable+WhereSelectListIterator`2[System.String,System.String...里的那个表达式树属性Expression,而像LINQ To Sql或者是EFCore等需要IQueryable这种解释型的就是去实现了IQueryProvider里面的方法 参考 《C#7.0核心技术指南
字符串的拼接:StringBuilder的使用,其AppendLine()自动换行。...将字符串写入文本文件:File.WriteAllText() 使用了部分类(partial) 使用可空类型:由于数据库中表中数据很有可能是NULL,可空类型使得数据从表中读取出来赋值给值类型更加兼容。...N层架构-数据访问层接口模板,IDao Template Script标签里可以自定义调用的方法,属性等。数据访问层接口大家肯定烂熟于心。 常用的CRUD方法以及主表找子表,子表找主表。...,",col.DataType,col.Name); } return args.Substring(0,args.Length-1); } //生成实力类时初始化属性...,",col.Name,col.Name); } return args.Substring(0,args.Length-1); } //方法:生成列的主键列构成的参数列表
Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8" Description="实体类" %> <%@...Property Name="DALNameSpace" Type="<em>System.String</em>" Default="Service" Category="String" Description="数据访问层<em>的</em>命名空间...string"; default: return "object"; } } /// /// 字符串转化为小写...return str; } using System; using System.Collections.Generic; using System.Linq
,UI上关心哪个属性值的变化呢?...“数据源”为界面上某个控件的某个属性 注意: 在C#代码中可以访问XAML代码中声明的变量,但XAML代码中无法访问C#代码中声明的变量。 ...PropertyChanged,一旦绑定的属性值改变,源会立即更新。 View Code 6.3.3 Binding的路径(Path) 即绑定到底需要关注哪个属性的值。...,XAML中.可以省略,C#代码中不可以省 6.3.5 为Binding指定源(Source)的几种方式 Binding的源是数据的来源,只要一个对象包含数据并能通过属性获取到,它就能当作Binding...指定源:当控件需要关注自己的、自己容器的或者自己内部元素的某个值时 *ObjectDataProvider:当数据源的数据不是通过属性而是通过方法暴露给外界时 *LINQ检索得到的数据对象 下面通过实例分述每种情况
如今,泛型已经广泛应用于C#的各个领域,其中用得较多的有如下几项: 集合(在集合中泛型一如既往地重要); 委托(尤其是在LINQ中的应用); 异步代码(Task表示该方法将返回一个类型为T的值);...--- 泛型度为1的方法 public void Method() {} <------ 泛型度为2的方法 当声明同名但度不同的泛型类型时,这些类型并不一定是同 一类别的,但一般不建议这么做...:typeof(T) = System.String typeof(List) = System.Collections.Generic.List`1[System.String] typeof(...对于度为1的泛型,书写格式为TypeName;如果参数多于1个,每增加一个参数就增加一个逗号。...泛型是C# 2截至目前最庞大的一个特性了,也是对C# 1的一项重大改进。下面介绍可空值类型,此项特性正是基于泛型建立的。
1、简介 C#是一种通用编程语言,涵盖了诸如面向对象编程,静态类型化,面向组件的编程,强类型化等各种学科。C#在ASP.NET框架中广泛用于创建网站,Web应用程序和游戏。...编译器将方法的地址存储为入口点,并使用此信息在创建任何对象之前开始执行。Void是类型修饰符,它声明方法或变量不返回任何值。 6、什么是物体? ?...22、System.String和System.Text.StringBuilder类之间有什么区别? System.String是不可变的。...当我们修改字符串变量的值时,会将新的内存分配给新值,并释放先前的内存分配。...System.StringBuilder设计为具有可变字符串的概念,在其中可以执行各种操作,而无需为修改后的字符串分配单独的内存位置。
看过很多ORM的实体类方案,大多是用反射来读数据库数据,这样当频繁操作实体类的时候效率很低,我借鉴了一位朋友的思路,采用.NET 2.0的泛型技术,为实体类提供一个通用的查询和持久化方案。...PFT_FundReviews p = new PFT_FundReviews(); OQL q = new OQL(p); q.TopCount = 1;...这对于一个拥有大字段的表来说很有用。字段的选取都是通过实体类对象.属性 的方式,完全面向对象,用起来有点像LINQ,呵呵。 为啥说读取数据不需要反射?...因为PDF.NET的实体类有内置的“属性名-属性值”字典,我们来看看具体是如何实现的: /// /// 根据数据阅读器对象,查询实体对象集合(注意查询完毕将自动释放该阅读器对象...保存数据也很简单,为指定的属性设置新值即可: PFT_Report utlReport = new PFT_Report(); utlReport.FundAccount =
本文来告诉大家在C#很少有人会发现的科技。即使是工作了好多年的老司机也不一定会知道,如果觉得我在骗你,那么请看看下面。 因为C#在微软的帮助,已经从原来很简单的,到现在的很好用。...>(); 可以看到需要写很多代码,如果这个值作为参数,才是可怕。...System.Collections.Generic.List>,string>; ,这个文件里的所有定义都可以使用 using 后面的值可以代替。...用extern alias解决两个assembly中相同的类型全名 - fresky - 博客园 字符串 大家看到了 C# 6.0 的$,是不是可以和@一起?...=(Foo f1, Foo f2) { return ""; } } 可以重写的运算很多,返回值可以自己随意定义。
v3; 实际上可以无限的使用??判断前面一个函数为空,那么问题来了,下面的代码输出的是多少? var n = 2 + foo?.N ?? 1; 上面代码的 foo 就是空的,那么 n 是多少?...>, string>(); 可以看到需要写很多代码,如果这个值作为参数,才是可怕。...System.Collections.Generic.List>,string>;,这个文件里的所有定义都可以使用 using 后面的值可以代替。....html 字符串 大家看到了 C# 6.0 的$,是不是可以和@一起?...=(Foo f1, Foo f2) { return ""; } } 可以重写的运算很多,返回值可以自己随意定义。
目录 1,获取类型的信息 1.1 类型的基类和接口 1.1.1 基类 1.1.2 获取实现的接口 1.1.3 获取泛型接口 1.2 获取属性、字段成员 1.2.1 构造函数 1.2.2 属性 1.2.3...;而方法就是 返回值、名称、参数等组成的代码块; 要操作反射,首先要获取到 类型 的反射信息,而类型的 Type ,与以下多种类型密切相关。...外所有的类型 1.1 类型的基类和接口 1.1.1 基类 C# 中,一个类型只能继承一个类型(基类型),使用实例的 Type.BaseType 属性,可以获取到此类型的基类型。...1.2 获取属性、字段成员 1.2.1 构造函数 一个类型最少不了的就是构造函数,即使没有编写构造函数,C# 编译时也会生成默认的构造函数。...;}这样的属性,C# 会默认生成一个字段给他。
作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列。 然后,SelectMany() 串联这些可枚举序列,以创建一个大的序列。...下面是单向关系的一个示例:Customer 类有一个类型为 City 的属性,但 City 类没有作为 Customer 对象集合的属性。...:执行分组联接 如何:执行内部联接 如何:执行左外部联接 如何:从多个源填充对象集合 (LINQ) (C#) 08 数据分组 分组是指将数据分到不同的组,使每组中的元素拥有公共的属性。...(LINQ) (C#) 09 生成运算 生成是指创建新的值序列。...Enumerable.OfType 方法可用于为 LINQ 查询启用非参数化集合。
C# 1.0 特性 第1个版本,编程语言最基础的特性。...,通过反射可以访问特性信息 Literals:字面值(或理解为常量值),区别常量,常量是和变量相对的 C#2.0新特性 泛型及其相关,匿名方法 泛型 2.0版本的C#语言和公共语言运行时(CLR)中增加了泛型...public class List { } 其中,T就是System.Collections.Generic.List实例所存储类型的占位符。...语句 Auto property initializers:自动属性初始化 Default values for getter-only properties:设置只读属性的默认值 Expression-bodied...条件操作符 String interpolation:字符串插值,产生特定格式字符串的新方法 nameof operator:nameof操作符,返回方法、属性、变量的名称 Dictionary initializer
[图片1 来源:《C# 7.0核心技术指南:19.2 反射并调用成员》] 那么,如何通过 Type 获取相应的成员呢? ?...1,MemberInfo MemberInfo 可以获取有关成员属性的信息,并提供对成员元数据的访问权限。...由图片1可以看到,MemberInfo 是所有反射类型的基类,此类为所有成员提供了基本功能。 使用 GetMember() 或 GetMembers() 可以获取类型的一个或多个成员。...MemberType 枚举的定义如下 名称 值 说明 All 191 指定所有成员类型 Constructor 1 指定该成员是构造函数 Custom 64 指定该成员是自定义成员类型 Event 2...下面将说一下属性和字段如何设置值和获取值。
既然使用枚举还要将实体类的属性转换下,为何不直接将实体类的属性定义成枚举类型? ...前面已经说过,PDF.NET的实体类是数据的容器,也就是说,我们在内存中将某个属性的值直接设置为枚举类型的值,也可以将内存中的Int 类型的来自数据库的值,在运行时转换成枚举类型。...这样,使得PDF.NET的实体类的属性类型可以不必跟数据库的字段类型严格对应,只要类型相容即可。...这个特点为系统移植数据库平台提供了很大的便利,比如Oracle 没有Decimal类型,没有real 类型,要使用非整形的数字类型,只有使用Number类型,那么为SqlServer设计使用的实体类,一般情况下也可以直接在...下面的代码是一个完整的使用实体类的枚举属性的例子: using System; using System.Collections.Generic; //using System.Linq; using
领取专属 10元无门槛券
手把手带您无忧上云