如何在Android Studio中创建类似C#的结构体数组?
在Android Studio中实现C#结构体及其数组的等价写法
嘿,我来帮你搞定这个问题!在Android Studio常用的Java或Kotlin里,没有和C#完全一致的struct类型,但我们可以用**类/记录类(Java)或者数据类(Kotlin)**来实现等价的功能,创建数组的方式也很直观,下面分两种语言一步步演示:
Java 实现方式
1. 定义等价于C#结构体的类型
你可以用普通类来模拟C#的结构体,或者用Java 16+的记录类(更简洁,自带值类型相关的方法):
普通类写法
// 对应C#的factor结构体 public class Factor { // 和C#结构体的公共字段对应,你原代码里的door_lenth如果是笔误可按需调整 public double door_lenth; public String current_model; public String current_number; // 可选:添加构造方法,方便快速初始化实例 public Factor(double door_lenth, String current_model, String current_number) { this.door_lenth = door_lenth; this.current_model = current_model; this.current_number = current_number; } }
记录类写法(Java 16+)
记录类会自动生成equals、hashCode、toString等方法,更贴近C#结构体的语义:
public record Factor(double door_lenth, String current_model, String current_number) {}
2. 创建结构体数组
创建数组的语法和C#非常相似,只是注意Java的数组初始化规则:
// 创建长度为100的Factor数组,初始元素均为null(Java对象数组默认值为null) Factor[] myarr = new Factor[100]; // 可选:循环初始化数组中的每个元素 for (int i = 0; i < myarr.length; i++) { myarr[i] = new Factor(2.0, "ModelA", "SN-" + i); }
Kotlin 实现方式
Kotlin的data class天生就适合模拟C#的结构体,语义和使用体验都非常接近:
1. 定义数据类
// 对应C#的factor结构体,data class自动处理值类型相关逻辑 data class Factor( var door_lenth: Double, var current_model: String, var current_number: String )
2. 创建数组
Kotlin提供了多种数组创建方式,按需选择:
// 方式1:创建长度为100的可空Factor数组,初始元素为null val myarr = arrayOfNulls<Factor>(100) // 方式2:直接初始化所有元素(更简洁) val myarr = Array(100) { index -> Factor(2.0, "ModelA", "SN-$index") }
补充说明
C#的struct是值类型,而Java的类/Kotlin的数据类是引用类型,但在日常Android开发场景中,这种差异几乎不会影响你的使用需求。如果需要更接近值类型的特性,Kotlin的data class在比较、拷贝等操作上已经和C#struct的表现一致了。
内容的提问来源于stack exchange,提问作者Saeed Sheikh
相关产品推荐
相关产品推荐

