ltx_zero

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  • 所有的类都派生自Object类,可以把派生类(Derived Class)直接赋值给基类(Base Class),基类赋值给派生类的时候需要进行显示转换 sunclass = (sunclass) fathertemp。
  • o is xxclass o as xxclass 这两个都不会报错,第一个返回boolean,第二个如果成功返回xx类,如果不成功返回null。
    • 实际操作中如果要进行类型转换,xxclass e = o  as xxclass if(e!=null){} 会比 if(o is xxclass){ xxlclass e = (xxclass) o }这种写法更友好。后面这种会进行两次判断。(会遍历整个继承层次结构)
  • InvalidCastException是类型转化出错的一种。类型转化可能会在编译报错,也可能正常编译在执行过程中报错
    • 如果转换后的类直接和函数需要的类不符(即不是当前类,也不是其子类,会在编译的时候直接报错)
    • 直接给子类赋值父类的对象,会直接在编译的时候报错
    • 子类是通过显示转换变来的父类来赋值的,这时候编译能过,但是执行的时候函数里面可能有具体某个类能用的func,可能会运行时报错。
  • c#里面$的作用类似于string.format,使用$就可以在原本填写参数占位符的位置来直接写具体参数。
    • string ans = string.Format("My name is {0}", "ada"); 等价于 string ans = $"My name is {"ada"}" 最后结果是My name is ada. 也可以使用name来代替ada(指赋值了name=“ada”以后,string ans = string.Format("My name is {name}) ),不需要双引号。最终输出结果是没有{}的,它是用来控制是否是参数的
    • 如果你不想在里层用双引号,又想使用字符串常量,可以 string ans = $"My name is {{ada}}" 结果My name is {ada},一层大括号只能用变量或者带引号常量,两层默认是字符常量。
    • 可以使用转义符\n这类的 string ans="My name is aaa.\n I am a girl.",直接用就行。

 

posted on 2021-11-16 15:37  ltx_zero  阅读(49)  评论(0编辑  收藏  举报