簡體   English   中英

數據表將元組作為 object

[英]Datatable getting tuple as an object

所以我遇到了一個我目前正在制作的 Unity 項目的問題

我有一個數據表,其中包含不同部分的統計信息[重量,產品,...] 在這個數據庫的腳本中有我創建的多個元組。 例如我在數據庫中的 Thrust Tuple<string, int> (在第六行)這個元組被分配了這個:

Tuple.Create("WASD",1)

WASD 是推進器可以發射的方向,1 是強度。

在我的代碼的一部分,我想將第二個值(1)添加到變量中。 但是它只是不工作。 如果我打印出元組,我會得到:

(WASD,1)

UnityEngine.MonoBehaviour:print(Object) Master:Start() (在 Assets/Scripts/Master.cs:68)

女巫很好

但我無法訪問它。 它說它是 object 但如果我執行GetType()我得到:

System.Tuple`2[System.String,System.Single]

我無法使用Item2Item1訪問它。 它只是(WASD,1)

BStats.Columns.Add(new DataColumn("Block", typeof(string)));
BStats.Columns.Add(new DataColumn("live", typeof(float)));
BStats.Columns.Add(new DataColumn("Weight", typeof(float)));
BStats.Columns.Add(new DataColumn("Products", typeof(Tuple<string,float>)));
BStats.Columns.Add(new DataColumn("Thrust", typeof(Tuple<string,float>)));
BStats.Columns.Add(new DataColumn("Consume", typeof(Tuple<string, float>)));
BStats.Columns.Add(new DataColumn("Desc", typeof(string)));

BStats.Rows.Add("Energy",1F,3F,Tuple.Create("Energy",1.0F),Tuple.Create("NAN",0F),
Tuple.Create("Thori  um", 0.1F), "a Thorium Reactor");

BStats.Rows.Add("Armor", 5F, 4F, Tuple.Create("NAN", 0F), Tuple.Create("NAN", 0F),
Tuple.Create("NAN", 0F), "a simple Armor block");

BStats.Rows.Add("Engine", 2F, 2F, Tuple.Create("NAN", 0F), Tuple.Create("WASD", 1F),
Tuple.Create("Fuel", 0.2F), "a space engine");

BStats.Rows.Add("Gun", 1.5F, 0.5F, Tuple.Create("NAN", 0F), Tuple.Create("NAN", 0F),
Tuple.Create("Energy", 0.5F), "a simple laser Gun");

BStats.Rows.Add("Command Capsule", 3F, 5F, Tuple.Create("NAN", 0F), Tuple.Create("NAN", 0F),
Tuple.Create("Energy", 0.1F), "the Heart of your spaceship.");

print(BStats.Rows[2][4])

我是 Unity 的新手,所以這將是一個愚蠢的錯誤,或者我使用 Datatables 的方式是錯誤的。

DataRow的索引器的返回類型object因此您需要其轉換為Tuple<string,float>

var tuple = (Tuple<string,float>)BStats.Rows[2][4];
Cosole.WriteLine(tuple.Item1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM