我正在嘗試用 c# 編碼,我有兩個主要類第一個是路由器,這是它的實作
public class Router
{
public int RouterValue = 0;
}
我在另一個名為 Route 的類中使用這個類,其中包含路由器串列,這是實作:
public class Route
{
public List <Router> routers = new();
bool exitLoop = false;
public void ReadInput()
{
Router router = new();
Console.WriteLine(" \n Please enter data Input : \n ");
for (int i = 0; !exitLoop ; i )
{
router.RouterValue = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("router value" , router.RouterValue);
routers.Add(router);
if (routers[i].RouterValue == 0)
{
exitLoop = true;
}
}
}
public void OutPut()
{
Console.WriteLine("out put : \n");
for (int i = 0; i < routers.Count; i )
{
Console.WriteLine(routers[i].RouterValue);
}
}
public int count()
{
return routers.Count;
}
public int sum(List<Router> _routers)
{
int sum = 0;
for (int i = 0; i < routers.Count; i )
sum = _routers[i].RouterValue;
return sum;
}
}
但是當我創建一個 Roue 物件并嘗試輸入值時,它會將它們列印為零,并且總和也等于零,那么問題出在哪里?我對其進行除錯并嘗試將設定器和吸氣器放入其中,但所有這些都無濟于事,有人對此有所了解嗎?
這是我在主課中添加值的部分:
Routes.Add(op.CreatRoute());
Routes[^1].ReadInput();
Routes[^1].OutPut();
uj5u.com熱心網友回復:
你只是創造一個Router物件:
Router router = new();
您只需更新一個物件即可更新一切。你輸入的最后一個值(終止回圈)是0,所以一個Router物件的最后一個值是0。
(這是在除錯器中單步執行代碼并觀察變數的運行時值的好機會。您會發現物件routers上的欄位中Route始終只有一個元素,無論您迭代該回圈多少次。)
Router在回圈中創建新物件,而是:
for (int i = 0; !exitLoop ; i )
{
Router router = new(); // <--- here
router.RouterValue = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("router value" , router.RouterValue);
routers.Add(router);
if (routers[i].RouterValue == 0)
{
exitLoop = true;
}
}
這樣,回圈的每次迭代都會創建(并附加到串列中)一個全新的 a 實體Router,而不是總是在同一個實體上運行。
除此之外,這也是保持在您需要它們的范圍內定義的變數的良好做法。這使代碼整體更簡單、更易于遵循,并幫助您隨著應用程式復雜性的增長而封裝功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/436766.html
