שאלה ב-C#
התחלתי לא מזמן ללמוד את השפה, כך שיש הרבה דברים בסיסיים שאני עדיין לא מכיר ( למרות ש-JAVA אני מכיר די טוב).
רשמתי את הקוד הבא:
שכל מה שהוא עושה זה לייצר מערך של 4 אובייקטים- RandomNumber - בכ"א מהאובייקטים מספר רנדומלי בין 0-9,
הנקודה המעניינת מבחינתי היא שכשאני מככב את המילה static-
/*statuc*/ Random gen = new Random();
אזי בכל האובייקטים המספר המוגרל הוא אותו זהה, לעומת זאת אם מורידים את הכיכוב מהמילה static, אז באמת כל אווביקט
מקבל מספר שונה.
אני מניח שזה קשור איכשהו למימוש של Random בשפה, אבל לא הצלחתי להבין את זה במדויק.
אשמח אם מישהו יוכל להסביר לי את ההתנהגות השונה בשני המקרים.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestRandomObject
{
class Program
{
static void Main(string[] args)
{
RandomNumber[] numArr = new RandomNumber[4];
for (int i = 0; i < numArr.Length; i++)
numArr = new RandomNumber();
String numberStr = "";
for (int i = 0; i < numArr.Length; i++)
numberStr+=" " + numArr.getNumber();
Console.WriteLine("Number Gets: " + numberStr);
Console.ReadKey();
}
}
public class RandomNumber
{
private int number;
/*statuc*/ Random gen = new Random();
public RandomNumber()
{
number = gen.Next(11);
}
public int getNumber()
{
return number;
}
}
}
התחלתי לא מזמן ללמוד את השפה, כך שיש הרבה דברים בסיסיים שאני עדיין לא מכיר ( למרות ש-JAVA אני מכיר די טוב).
רשמתי את הקוד הבא:
שכל מה שהוא עושה זה לייצר מערך של 4 אובייקטים- RandomNumber - בכ"א מהאובייקטים מספר רנדומלי בין 0-9,
הנקודה המעניינת מבחינתי היא שכשאני מככב את המילה static-
/*statuc*/ Random gen = new Random();
אזי בכל האובייקטים המספר המוגרל הוא אותו זהה, לעומת זאת אם מורידים את הכיכוב מהמילה static, אז באמת כל אווביקט
מקבל מספר שונה.
אני מניח שזה קשור איכשהו למימוש של Random בשפה, אבל לא הצלחתי להבין את זה במדויק.
אשמח אם מישהו יוכל להסביר לי את ההתנהגות השונה בשני המקרים.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestRandomObject
{
class Program
{
static void Main(string[] args)
{
RandomNumber[] numArr = new RandomNumber[4];
for (int i = 0; i < numArr.Length; i++)
numArr = new RandomNumber();
String numberStr = "";
for (int i = 0; i < numArr.Length; i++)
numberStr+=" " + numArr.getNumber();
Console.WriteLine("Number Gets: " + numberStr);
Console.ReadKey();
}
}
public class RandomNumber
{
private int number;
/*statuc*/ Random gen = new Random();
public RandomNumber()
{
number = gen.Next(11);
}
public int getNumber()
{
return number;
}
}
}