我在gymInfo类中有这段代码:
public class gymInfo
{
public gymArray getAllGymsByStars()
{
gymDataTableAdapters.gymsTableAdapter gymsTableAdapter = new gymDataTableAdapters.gymsTableAdapter();
DataTable gymsDataTable = gymsTableAdapter.getAllGymsByStars();
gymArray gymArray = new gymArray();
foreach(DataRow row in gymsDataTable.Rows)
{
gymArray.name = row["name"].ToString();
}
return gymArray;
}
}
gymsDataTable
包含20行名称,现在我已经创建了一个自定义类,这里是代码:
public class gymArray
{
public string name { get; set; }
}
我期望string name
填充20个名称(因为它们在数据表中是20行)但是当我在行return gymArray
上调试时它只显示最后一行的名称而不是显示一整套自定义名称。
有谁理解我做错了什么?
答案 0 :(得分:2)
您还没有真正创建过数组。你有一个对象,而你只是重复更改其名称属性。
此外,在命名时你并没有关注C# conventions。你的代码应该更像这样:
gymArray
我没有将单个对象命名为“数组”,而是创建了一个通用的Gym对象列表,并从public class GymInfo
{
public List<Gym> GetAllGymsByStars()
{
gymDataTableAdapters.gymsTableAdapter gymsTableAdapter = new gymDataTableAdapters.gymsTableAdapter();
DataTable gymsDataTable = gymsTableAdapter.getAllGymsByStars();
List<Gym> gyms = new List<Gym>();
foreach(DataRow row in gymsDataTable.Rows)
{
Gym gym = new Gym();
gym.Name = row["name"].ToString();
gyms.Add(gym);
}
return gyms;
}
}
public class Gym
{
public string Name { get; set; }
}
方法返回了该对象。
答案 1 :(得分:0)
mvn -P bluemix cf:services
[INFO] ------------------------------------------------------------------------
[INFO] Building iservport-ubivis 0.1-RELEASE
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- cf-maven-plugin:1.1.2:services (default-cli) @ iservport-ubivis ---
[INFO] Services instances
[INFO]
name service plan bound apps
-------- ------- ---------- -------------
ubivisDB sqldb sqldb_free familiasegura
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.947s
[INFO] Finished at: Fri Aug 28 15:57:42 BRT 2015
[INFO] Final Memory: 15M/197M
答案 2 :(得分:0)
我不知道在每次覆盖foreach循环中的<!DOCTYPE html>
<html>
<body>
<form method="post">
<input id="search" type="text"/>
<button onclick="return abc()">test</button>
</form>
<script>
function abc() {
var textt = document.getElementById("search");
if (textt.value == "test") {
window.location.assign("http://www.google.com")
}
}
</script>
</body>
</html>
属性时,您希望如何存储所有名称
循环就是为你做的事情:
name
我想,您完全清楚gymArray.name = "some name";
gymArray.name = "other name";
的最后一个值是name
。您可以使用other name
运算符附加到最后一个值,这将导致一个大的名称字符串,或者将+
属性更改为某个集合并添加新名称。也许name
不是您的首选类型。
答案 3 :(得分:0)
我认为你应该实现为
List<gymArray> gymArray = new List<gymArray>();
并在循环中。
gymArray.Add(new gymAray { name : row["name"].ToString() });
答案 4 :(得分:0)
好吧,你一次又一次地设置同一个对象的属性。
试试这个
public class gymInfo
{
public gymArray[] getAllGymsByStars()
{
int count = 0;
gymDataTableAdapters.gymsTableAdapter gymsTableAdapter = new gymDataTableAdapters.gymsTableAdapter();
DataTable gymsDataTable = gymsTableAdapter.getAllGymsByStars();
gymArray[] gymArray = new gymArray[gymsDataTable.Rows.Count];
foreach(DataRow row in gymsDataTable.Rows)
{
gymArray[count] = new gymArray();
gymArray[count].name = row["name"].ToString();
count++;
}
return gymArray;
}
}