• C#关键字详解第一节


    abstract:抽象类:
    
    他表达对问题或者实际中的事物,对象等所设计出的抽象概念,比如一个灵感、生物等,这些都是抽像,
    
    但是他们往往也有具体的指向,比如生物圈有人类,猴子,老虎等等,老虎和人类是实际存在的,但是
    
    生物是抽象的,在C#中抽象类往往就是表达一个实际存在的事物指向的概念对象,但是抽象的访问修饰必
    
    须是public,不管是类还是方法或者属性,比如创建一个抽象类生物,而人类这个实际存在的事物就可
    
    以被认为是他的子类,子类可以继承父抽象类,但是必须加override(重载)去实现抽象类的属性或者
    
    方法,如果不加override则子类-人类则必须是抽象类,这样人类也是当做一个抽象概念去实例化,而人
    
    类的子类可以是白种人,黄种人等等。。这取决于对事物的探讨深度。
    namespace 抽象类
    {
        public abstract class Biological
        {
            public int Height { get; set; }//定义一个高度(生物具有的基本属性)
            public int Weight { get; set; }//定义一个重量
            public string Sex { get; set; }//定义性别
        }
        public class Human:Biological//子类人类继承了父抽象类
        {
           //人类有身高和体重(此处列举了一个身高180厘米体重155斤的男性人类)
            public override int Height 
            {
                get { return Height;}
                set { Height = 180; }            
            }
            public override int Weight
            {
                get { return Weight;}
                set { Weight = 155; }
            }
            public override string Sex 
            {
                get { return Sex; }
                set { Sex="男性"; }
            }
        }
    }
    as类型转换与is类型转换判断:

    C#的类型转换是as,但是提到类型转换不得不说到一个关键字is,is看起来和as差不多但是真正的含义 却相差甚远,is是检查一个对象是否兼容与其他的属性并且永远返回的值是一个Bool值,如果一个对象 是某个类型或是其父类型的话就返回为true,否则的话就会返回为false,他不会抛出异常。现在来看看 在winform中的is关键字用法案例
    namespace is关键字 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Object obj = new Object();//实例化基类 if (obj is Label)//此时的Label是类型而不是标签 { MessageBox.Show("类型转换失败"); } else { MessageBox.Show("类型转换成功"); } } } } 运行结果是类型转换成功!所以is只是做类型兼容判断,并不执行真正的类型转换。返回true或false, 不会返回null,对象为null也会返回false,但是is可以做值类型的转换判断,而as则不可以!切记! 而as是将对象转换成我们所需要的对象,比如一个黄红人可以转化成黑种人(晒黑就行了)这个只是个举 例,as不会抛出异常,但是如果结果为空的话会抛出NullReferenceException异常,正常情况下会直接返 回转换结果,这是与is的最根本区别!但是!as转换类型是必须转换的对象是被转换对象类型的派生类, 现在来看看在winform中的as关键字用法案例 namespace as关键字 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Object obj = new Object();//实例化基类 Label label = obj as Label;//将基类转换成label标签类 if (label == null) { MessageBox.Show("类型转换失败"); } else { MessageBox.Show("类型转换成功"); } } } } 程序运行会提示类型转化失败,当然,基类怎么可能转换成label类,你让一个鸡转换为一个蛋那怎么行 呢。is与as的比较就是这样,as更高效也更安全,推荐尽可能的使用as关键字去转换类型,而不是一个括 号加类型:()……这样去转换!这就是is与as关键字
  • 相关阅读:
    OPENC函数 UF_CSYS UF_MTX UF_VEC (判断矢量平行)(UF_VEC3_is_parallel)
    OPENC函数 UF_CUTTER UF_NCGROUP UF_PARAM(如何创建刀具)(UF_CUTTER_create)
    OPENC函数 (UF_setup UF_ncgroup UF_oper)(创建程序组并创建程序,然后把程序放入组中)(UF_OPER_create)
    OPENC函数 UF_CAM UF_NCGROUP (UF_CAM_opt_ask_types UF_CAM_opt_ask_subtypes UF_NCPROG_create UF_NCGROUP_accept_member)
    OPENC函数UF_UI_ONT UF_OPER (过切检查) (UF_OPER_is_path_gouged)
    OPENC函数 UF_SETUP UF_NCGROUP(获取CAM模块中 程序 机床 几何 加工方法的所有名称)(UF_SETUP_ask_geom_root UF_SETUP_ask_program_root)
    OPENC函数 UF_UI_ONT UF_OPER函数(对当前程序进行操作(获取名称))(UF_UI_ONT_ask_selected_nodes、UF_OPER_ask_cutter_group等)
    OPENC函数 UF_TRNS(平移 变换)( uf5943 , uf5947)
    openstackM版本安装
    openstack及组件简要介绍
  • 原文地址:https://www.cnblogs.com/sandaman2019/p/10414986.html
Copyright © 2020-2023  润新知