<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Eric__Cheng的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Eric__Cheng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Eric__Cheng]]></copyright><item><title><![CDATA[C#如何理解继承]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/90345092</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/90345092</guid><author>Eric__Cheng</author><pubDate>Sun, 19 May 2019 17:44:30 +0800</pubDate><description><![CDATA[算是比较能够解惑的回答！要能够强化一下对面向对象的理解

（1）继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。
（2）继承简化了人们对事物的认识和描述，能清晰体现相关类间的层次结构关系。
（3）继承提供了软件复用功能。若类B继承类A，那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度，大大增加程序的重用性。
（4...]]></description><category></category></item><item><title><![CDATA[C#访问修饰符]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/90344900</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/90344900</guid><author>Eric__Cheng</author><pubDate>Sun, 19 May 2019 17:30:47 +0800</pubDate><description><![CDATA[①private，私有访问修饰符，被private访问修饰符修饰的成员只有在当前类的内部可以访问，其他地方一律不得访问。类中成员不用修饰符，默认为private。

②protected，表示当前类内部可以访问，并且所有的子类内部也可以访问。

③internal，当前程序集内部。类的默认访问修饰符是internal。

注：protected和internal访问修饰符无所谓哪个更“可访问”，因...]]></description><category></category></item><item><title><![CDATA[Abstract和Virtual区别]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/89979939</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/89979939</guid><author>Eric__Cheng</author><pubDate>Wed, 08 May 2019 22:57:51 +0800</pubDate><description><![CDATA[解读一
c# 中 Abstract和Virtual比较容易混淆，都与继承有关，并且涉及override的使用。下面讨论一下二者的区别：
一、Virtual方法（虚方法）
virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况：
情况1：在基类中定义了virtual方法，但在派生类中没有重写该虚方法。那么在对派生类实例的调用中，该虚方法使用的是基类定义的方法。
情况2：在基类中...]]></description><category></category></item><item><title><![CDATA[C#.NET里面抽象类和接口有什么区别?]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/87993007</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/87993007</guid><author>Eric__Cheng</author><pubDate>Wed, 27 Feb 2019 21:55:38 +0800</pubDate><description><![CDATA[声明方法的存在而不去实现它的类被叫做抽象类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽象类，并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现，否则它们也是抽象类为。取而代之，...]]></description><category></category></item><item><title><![CDATA[C#之out和ref的用法区别&&NX获取面法相及中心点]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/84572640</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/84572640</guid><author>Eric__Cheng</author><pubDate>Tue, 27 Nov 2018 20:14:30 +0800</pubDate><description><![CDATA[懒得打字了，摘一段总结，但是我也是这么用和想的。

“

ref和out的区别在C# 中，既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值，并保持该更改。若要通过引用传递参数， 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效，其作用也很像C中的指针变量。它们的区别是：

1、使用ref型参数时，传入的参数必须先被初始化。对out而言，必须在方...]]></description><category></category></item><item><title><![CDATA[C#调用C/C++dll的方法（近期研究的课题）]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/83353019</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/83353019</guid><author>Eric__Cheng</author><pubDate>Thu, 25 Oct 2018 00:04:27 +0800</pubDate><description><![CDATA[转载自https://www.cnblogs.com/bizca/p/4962559.html   bizca大神的博客

NX Open,怎样取到面的环LOOP

 在封装的ufun .NET库里面，对UF_MODL_ask_face_loops这个函数并没有封装，导致我们很多不便，那我们在.NET下怎样才能使用这个函数呢？？当然是手动处理一下


using System;
using Sys...]]></description><category></category></item><item><title><![CDATA[UFUN发射线函数UF_MODL_trace_a_ray的用法（转，原文为C++，现在版本为C#）]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/83317090</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/83317090</guid><author>Eric__Cheng</author><pubDate>Tue, 23 Oct 2018 22:57:25 +0800</pubDate><description><![CDATA[本片源码例子非本人所创，不过是转换了开发语言版本,此例非常具有学习效果，原文请查看

https://blog.youkuaiyun.com/lu1287580078/article/details/82916477?from=timeline    Caesar卢尚宇优快云

class FD_CreateTrace
    {
        private NXOpen.Session theSess...]]></description><category></category></item><item><title><![CDATA[反射机制]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/83214022</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/83214022</guid><author>Eric__Cheng</author><pubDate>Sat, 20 Oct 2018 16:26:05 +0800</pubDate><description><![CDATA[-----------------原文如下--------

1、 什么是反射
2、 命名空间与装配件的关系
3、 运行期得到类型信息有什么用
4、 如何使用反射获取类型
5、 如何根据类型来动态创建对象
6、 如何获取方法以及动态调用方法
7、 动态创建委托
1、什么是反射
        Reflection，中文翻译为反射。
        这是.Net中获取运行时类型信息的方式，.Net的...]]></description><category></category></item><item><title><![CDATA[C#中怎么调用WinAPI函数(转载)]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/83066426</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/83066426</guid><author>Eric__Cheng</author><pubDate>Mon, 15 Oct 2018 23:18:27 +0800</pubDate><description><![CDATA[在C#中经常需要调用一些API函数,那么怎样才能正确的调用API函数呢，如下：

 

一、调用API格式

 

//引用此名称空间，简化后面的代码

usingSystem.Runtime.InteropServices;

...

 

//使用DllImportAttribute特性来引入api函数，注意声明的是空方法，即方法体为空。

[DllImport(&quot;user32.dll&quot;)]...]]></description><category></category></item><item><title><![CDATA[C#编写高质量代码第八天]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/82432830</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/82432830</guid><author>Eric__Cheng</author><pubDate>Thu, 06 Sep 2018 00:11:06 +0800</pubDate><description><![CDATA[Linq的三个用法

针对LINQ设计的扩展方法大多应用了泛型委托，system命名空间定义了泛型委托Action、Func和Predicate，可以这样理解这三个委托，Action用于执行一个操作，所以它没有返回值，Func用于执行一个操作并返回值，Predicate用于定义一组条件并判断是否符合条件。select扩展方法接收的就是有个Func委托，Lambda表达式其实就是一个简洁的委托，运算...]]></description><category></category></item><item><title><![CDATA[C#编写高质量代码第七天]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81813218</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81813218</guid><author>Eric__Cheng</author><pubDate>Sun, 19 Aug 2018 00:11:05 +0800</pubDate><description><![CDATA[阶段总结：

第一阶段的学习已经完成，主要的内容再做个小的总结

第一天：

1、主要是从类型上来概述装箱和拆箱的概念（值类型到引用类型是装箱，反正拆箱（我要再记一遍））。

2、隐式类型转换和显示类型转换，对于有继承关系的，子类到基类的转换是隐式类型转换，反之是显示类型转换，建议使用As

3、如果不存在继承关系的也可以通过重载类型operator的方式（explicit显示转换，implici...]]></description><category></category></item><item><title><![CDATA[C#编写高质量代码第六天]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81713184</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81713184</guid><author>Eric__Cheng</author><pubDate>Wed, 15 Aug 2018 23:44:26 +0800</pubDate><description><![CDATA[总结：


	1、如果没有为类型重写Tostring方法，会使用Object的Tostring返回当前类型的名称
	
	
	2、继承Ifomattable接口可以实现可格式化的ToString ，就是多一个判读条件，然后在内部通过Switch case进行判读
	
	
	深拷贝和签拷贝的实现方法如下，深拷贝可以通过序列化和反序列的方式最终获得与之前不相干的的对象
	
 

using System...]]></description><category></category></item><item><title><![CDATA[C#编写高质量代码第五天]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81639480</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81639480</guid><author>Eric__Cheng</author><pubDate>Tue, 14 Aug 2018 00:07:58 +0800</pubDate><description><![CDATA[总结：

1、对于引用类型，我们要定义“值相等性”，应该仅仅去重载equals
2、根据目前的了解RfrenceEquals只使用于直接比较字符串(那为啥我不直接用==来比较字符串呢？)，不适合类和int类型
3、重写Equals方法的同时，也应该实现一个类型的接口IEquatable&amp;lt;T&amp;gt;

using System;
using System.Collections.Generic...]]></description><category></category></item><item><title><![CDATA[C#编写高质量代码第四天]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81518177</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81518177</guid><author>Eric__Cheng</author><pubDate>Thu, 09 Aug 2018 00:40:42 +0800</pubDate><description><![CDATA[总结：

重载类能够实现没有继承关系直接的类与类之间的转换，重载运算符能够实现类与类的运算符运算，能够自定义预算符实际的要求，同时也比较直观。
	重写Icomparable&amp;lt;T&amp;gt;和Icompare&amp;lt;T&amp;gt; 前者实现与当前类中参数的比较器，后者则是实现非默认比较器，是实现外部类之间的比较（集合中会自动获取当前中所有的类进行自动比较和排序）。实现方式是List&amp;lt;&amp;gt;集合...]]></description><category></category></item><item><title><![CDATA[C#编写高质量代码第三天]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81490907</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81490907</guid><author>Eric__Cheng</author><pubDate>Wed, 08 Aug 2018 00:23:41 +0800</pubDate><description><![CDATA[总结：

const 天然是static修饰，readonly修饰的值类型和引用类型都不可以再重新赋值，但是对于引用类型指向的实例对象可以再次赋值。
	不要显示赋值给枚举对象，枚举对象默认0为初始值，保持默认就可以，因为如果需要增加枚举值时如果已经显示的复制会发生错误
	枚举的使用：通过值获取枚举类型（枚举）int 强转 ，反之要等到枚举类型值（int）枚举对象
	 
	
using System...]]></description><category></category></item><item><title><![CDATA[C#编写高质量代码第二天]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81463607</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81463607</guid><author>Eric__Cheng</author><pubDate>Tue, 07 Aug 2018 00:08:08 +0800</pubDate><description><![CDATA[总结：

使用tryParse比Parse要好，并且编写方法时可以使用TryDo模式，已提供程序运行效率
	as和强制类型转换的区别，建议使用As方式，非继承关系无法使用As ，引出implictic和explic重载类的区别
	int？可空类型，？？判断左侧值是否为null，是传入右侧值，不是null传入左侧值
	
using System;
using System.Collections.G...]]></description><category></category></item><item><title><![CDATA[C#编写高质量代码第一天]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81395232</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81395232</guid><author>Eric__Cheng</author><pubDate>Fri, 03 Aug 2018 22:12:35 +0800</pubDate><description><![CDATA[using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PromoteDay01
{
    class Program
    {

        static void Main(string[]...]]></description><category></category></item><item><title><![CDATA[为什么需要使用泛型类&lt;T&gt;]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81267129</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81267129</guid><author>Eric__Cheng</author><pubDate>Sun, 29 Jul 2018 00:40:12 +0800</pubDate><description><![CDATA[ 使用泛型行的最大好处就是代码重用，合理的使用泛型可以大大的解决我们编写代码的数量，同时也可以提高我们的程序性能

下面我通过一个简单的例子讲解

   现在我们需要一个处理两个数据类型，int 类型和String的数据，他们都需要用到栈的操作，当我没没有泛型的时候需要写出两个栈

的数据结构

  2.1 处理int类型




public class Stack

    {

      ...]]></description><category></category></item><item><title><![CDATA[XML序列化和反序列化]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81073539</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/81073539</guid><author>Eric__Cheng</author><pubDate>Mon, 16 Jul 2018 23:42:39 +0800</pubDate><description><![CDATA[阅读目录

开始
	最简单的使用XML的方法
	类型定义与XML结构的映射
	使用 XmlElement
	使用 XmlAttribute
	使用 InnerText
	重命名节点名称
	列表和数组的序列化
	列表和数组的做为数据成员的序列化
	类型继承与反序列化
	反序列化的实战演练
	反序列化的使用总结
	排除不需要序列化的成员
	强制指定成员的序列化顺序
	自定义序列化行为
	序列化去掉XM...]]></description><category></category></item><item><title><![CDATA[C#近期学习]]></title><link>https://blog.youkuaiyun.com/Eric__Cheng/article/details/80754196</link><guid>https://blog.youkuaiyun.com/Eric__Cheng/article/details/80754196</guid><author>Eric__Cheng</author><pubDate>Wed, 20 Jun 2018 23:43:52 +0800</pubDate><description><![CDATA[1、特性具有以下属性：

特性向程序添加元数据。 元数据是程序中定义的类型的相关信息。 所有 .NET 程序集都包含一组指定的元数据，用于描述程序集中定义的类型和类型成员。 可以添加自定义特性来指定所需的其他任何信息。 有关详细信息，请参阅创建自定义特性 (C#)。
	可以将一个或多个特性应用于整个程序集、模块或较小的程序元素（如类和属性）。
	特性可以像方法和属性一样接受自变量。
	程序可使用反...]]></description><category></category></item></channel></rss>