首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin关键字之lateinit

Kotlin中定义变量或者属性都是需要初始化值,并且其都是private,但是有些时候对于变量或者属性只需要声明,但是不需要初始化,则kotlin提供了lateinit关键字来实现: class...也许有人会问到为什么为什么不可以修饰原始数据类型 对于对象类型,Kotlin使用 null 值,以标记 lateinit 属性尚未初始化,并在访问该属性时引发适当异常。...对于原始类型,没有这样值,因此无法将属性标记为未初始化并提供诊断信息lateinit 需要提供。...因此,仅对象类型属性支持 lateinit 但是 lateinit 是一个坑,对于新手来说还是一个不小坑 在 Kotlin 代码中慎用 lateinit 属性 这位作者解释很清楚了 对于 Kotlin...最后再提一下Kotlin lateinit 和 by lazy 区别: 1.lazy{} 只能用在val类型, lateinit 只能用在var类型 如 : val name: String by

90920

KotlinKotlin 委托 ( 使用 by 关键字进行接口委托 )

定义普通接口 : 使用 interface 声明接口 , 接口中方法没有方法体 , 也不用 abstract 关键字修饰 ; package entrust /** * 定义一个学习接口 , 代表有学习能力...实现接口 : 使用 “:” 声明该类实现接口 , 是接口子类 , 注意类中必须实现接口方法 , 实现方法需要使用 override 修饰 ; package entrust /** * 定义学生类..., 实现学习接口 , 其有学习能力 */ class Student : IStudy { /** * 实现学习抽象方法 */ override fun study...使用委托实现接口基础上执行额外操作 ---- 使用委托实现接口基础上执行额外操作 : 当类实现接口 , 并将接口操作委托给了另外类 , 此时仍可以实现接口中方法 , 在重写方法中 , 可以调用委托方法...测试委托 // 创建 使用委托实现接口 类对象 var badStudent : BadStudent = BadStudent() //执行委托方法 // 学习

65530

C#partial关键字

这节讲一下partial(局部,部分关键字,初学者可能没有接触过这个关键字,但是只要你写过winform或者WPF应用程序的话,那你肯定被动用过这个关键字。...首先介绍一下这个关键字作用,它用作定义一个部分类,也就是说,对于一个类,你可以写在不同文件中(当然不能超出命名空间限定),通过partial声明,系统就会自动讲分布在不同地方类联系在一起。...窗体应用程序,分为界面文件(.design)和代码文件(.cs),这两者之间就是通过partial关键字联系在一起,所以这也是为什么说被动用过原因。...,将方法定义在一起,把类分成多个文件,这样可以更好管理代码,同时也方便后期维护。...partial关键字除了可以定义部分类以外,还可以定义部分方法,部分方法没有什么特别的作用,它分部形式,和类一样,只不过,部分方法有很多限制,总结如下: 可以为静态,但是必须是私有方法(private

30940

C# params关键字

1、params关键字作用 (1)、使用 params关键字可以指定一个方法参数,该方法参数数目可变。 (2)、可以发送参数声明中所指定类型逗号分隔参数列表或指定类型参数数组。...如果未发送任何参数,则 params 列表长度为零。 (3)、在方法声明中 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。...2、总结分析 (1)当参数类型定义成param int[] args时,这时UseParam方法就接收一个可变长int类型参数数组,注:只能是一维,不能是二维,要是二维就乱套了 所以,UseParam...方法调用方式就有两种: i、代码如下: UseParam(1,2,3,4,5); ii、代码如下: int[] args={1,2,3,4,5}; UseParam(args);  (2)当参数类型定义成...param object[] args时,这是UseParam就接收一个可变长object类型参数数组,注:只能是一维,不能是二维,要是二维就乱套了 所以,UseParam方法调用方式就有两种

79760

C# partial关键字

1.概要 聊到partial关键字大家可能会有点陌生,在经常写WPF开发者中一定见过但是没有主动去使用过这个关键字。...那么这里我们就来看看这个关键字除了在WPFwindow里使用还有哪些地方可以主动去使用它。...该关键字可以拆分一个类、一个结构、一个接口或一个方法定义到两个或更多文件中是可能。 每个源文件包含类型或方法定义一部分,编译应用程序时将把所有部分组合起来。...这里主要讲解partial关键字在类、接口中应用,在以下几种情况下需要拆分类定义: 处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理。...2.详细内容 使用场景:当我们在编码过程当中发现某一个类实现需要写大量代码,且因为业务或设计问题不可分割可预见性知道该类实现非常臃肿,那么这个时候partial关键字就能派上用场了。

17120

C#学习笔记之一】C#关键字

C#关键字 关键字是对编译器具有特殊意义预定义保留标识符。它们不能在程序中用作标识符,除非它们有一个 @ 前缀。例如,@if 是有效标识符,但 if 不是,因为 if 是关键字。...除了下表中引用主题中介绍以外,语句都是按照顺序执行。 下表列出了 C# 语句关键字。 有关不用任何关键字表示语句更多信息,请参见语句(C# 编程指南)。...文字关键字C# 参考) C# 有下列文字关键字: null true false default 上下文关键字C# 参考) 上下文关键字用于提供代码中特定含义,但它不是 C#保留字。...C# 3.0 中引入所有查询关键字也都是上下文相关。有关更多信息, 查询关键字C# 参考) 本节包含查询表达式中使用的上下文关键字。...本节内容 子句 说明 from 指定数据源和范围变量(类似于迭代变量)。 where 根据一个或多个由逻辑“与”和逻辑“或”运算符(&& 或 ||)分隔布尔表达式筛选源元素。

2.4K50

C#override和new关键字

然而C#中必须使用virtual关键字显示声明该函数是虚函数,然后在子类中使用override关键字重写父类方法,这才真正实现了对父类方法重写,才能实现多态(C++中多态就是使用虚函数实现,而且和...C#一样必须使用virtual关键字显示声明)。...例如,这意味着在基类中引入与派生类中某个成员具有相同名称新成员在 C# 中是完全支持,不会导致意外行为。...它还意味着类必须显式声明某方法是要重写一个继承方法,还是一个隐藏具有类似名称继承方法新方法。 在 C# 中,派生类可以包含与基类方法同名方法。 基类方法必须定义为 virtual。...可以从派生类中使用 base 关键字调用基类方法。 override、virtual 和 new 关键字还可以用于属性、索引器和事件中。 默认情况下,C# 方法为非虚方法。

1.3K20

Kotlin】函数 ④ ( 匿名函数参数 | 匿名函数 it 关键字 )

文章目录 一、匿名函数参数 二、匿名函数 it 关键字 一、匿名函数参数 ---- 匿名函数 可以不带参数 , 也可以带多个参数 ; 不带参数匿名函数 : // 声明 函数类型 变量, 并为其赋值...匿名函数 val helloFun: ()->String = { "Hello World" } 带参数匿名函数 : 匿名函数 参数类型 放在 函数类型 定义中...值作为参数 println(helloFun(18)) } 执行结果 : 二、匿名函数 it 关键字 ---- 如果 匿名函数 只有 1 个函数参数 , 在 匿名函数 函数体 中 , 可以...省略 函数名 声明 , 使用 it 关键字 代替 ; 代码示例 : 在下面的 匿名函数中 , 只有 一个 Int 类型函数参数 , 在函数体中可以省略 age -> 参数名 声明 , 可以 使用默认...it 关键字 作为 参数名 ; fun main() { // 声明 函数类型 变量, 并为其赋值 匿名函数 val helloFun: (Int)->String = {

70930

C# 中yield关键字解析

前言   前段时间了解到yield关键字,一直觉得还不错。今天给大家分享一下yield关键字用法。yield return 返回集合不是一次性返回所有集合元素,而是一次调用返回一个元素。...通过代码运行结果,我们可以看到这里返回结果 yield return 和comment return是分成两边。先执行完一个然后开始执行另外一个。不干涉。...通过上面的案例我们可以发现,yield return 并不是等所有执行完了才一次性返回。而是调用一次就返回一次结果元素。这也就是按需供给。...解析定义类 我们已经大致了解了yield 用法和它与平常返回区别。我们可以继续查看其运行原理。...这样去实现迭代遍历。同时包含_state字段、用来存储上一次记录。_current包含当前值、也通过_initialThreadId获取当前线程id。

89620

【学习笔记】区别Kotlinobject和companion object关键字

【学习笔记】区别Kotlinobject和companion object关键字 2017-06-20 by Liuqingwen | Tags: Kotlin | Hits ?...不过,现在有了 Kotlin ,那都不是事了,忘记那个 X 吧,一个 object 关键字轻松搞定!真的,相信我,生活就是要那么容易。 ?...在 Kotlin 中,除了 object 关键字还有个 companion object 关键字,这个又是什么鬼?怎么使用?有啥区别?在没有仔细阅读相关文档资料之前还真有点傻傻分不清了。...但是, Kotlin object 可以。...扩展类静态成员 Kotlin 扩展功能非常强大,是程序猿爱不释口且口口相传实用特性之一。那么我们怎么扩展类静态成员呢?这个时候当然是 companion object 派上用场时刻了!

3.1K30

Kotlin】类继承 ① ( 使用 open 关键字开启类继承 | 使用 open 关键字开启方法重写 )

文章目录 一、使用 open 关键字开启类继承 二、使用 open 关键字开启方法重写 一、使用 open 关键字开启类继承 ---- Kotlin类 默认都是 封闭 , 无法被继承 ,...如果要想类被继承 , 需要在定义类时 使用 open 关键字 ; 定义一个普通 Kotlin 类 : class Person(val name: String, val age: Int) {...kotlin 类 , 在编译时会提示 This type is final, so it cannot be inherited from 报错信息 ; 如果使用 open 关键字 修饰 Person...---- 在 Kotlin子类中 , 使用 override 关键字 重写方法 , 格式为 : override fun 被重写方法名(参数列表): 返回值类型 { // 方法体 } 注意..., 父类中 被重写方法 必须 使用 open 关键字修饰 , 才能开启方法重写 , 否则默认情况下方法是 final 类型 ; 如果在父类中 , 被重写函数是普通函数 , 没有使用 open 关键字修饰

59710

Kotlin 标识符、关键字和注释

构成标识符字符均有一定规范,Kotlin 语言中标识符命名规则如下: 区分大小写:Myname 与 myname 是两个不同标识符。 首字符,可以是下划线(_)或字母,但不能是数字。...在 Kotlin 语言中有两个由编译器定义特定标识符,它们只能在特定场景中使用有特定作用,而在其他场景中可以做标识符使用。...提示 如果一定要使用关键字作为标识符,可以在关键字前后添加反引号(`)。另外,Kotlin语言中字母采用是双字节 Unicode 编码。...关键字 关键字类似于标识符保留字符序列,由语言本身定义好Kotlin 语言中有 70 多个关键字,全部是小写英文字母,以及 ! 和 ? 等字符构成。...// This is an end-of-line comment /* This is a block comment on multiple lines. */ Kotlin块注释可以嵌套

33620
领券