zoukankan      html  css  js  c++  java
  • 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关键字
  • 相关阅读:
    Saltstack module gem 详解
    Saltstack module freezer 详解
    Saltstack module firewalld 详解
    Saltstack module file 详解
    Saltstack module event 详解
    Saltstack module etcd 详解
    Saltstack module environ 详解
    Saltstack module drbd 详解
    Saltstack module dnsutil 详解
    获取主页_剥离百度
  • 原文地址:https://www.cnblogs.com/sandaman2019/p/10414986.html
Copyright © 2011-2022 走看看