In file C:\xampp\htdocs\eclass\include\action.php on line 25 : Unable to execute statement:"Table '.\eclass\actions_daily' is marked as crashed and should be repaired", sqlstate:"145", errornum:"HY000", statement:"SELECT id, TIME_TO_SEC(TIMEDIFF(NOW(), last_update)) AS diff, module_id FROM actions_daily WHERE user_id = ? AND course_id = ? AND day = DATE(NOW()) ORDER BY last_update DESC LIMIT 1", elapsed:0.002

In file C:\xampp\htdocs\eclass\include\action.php on line 50 : Unable to execute statement:"Table '.\eclass\actions_daily' is marked as crashed and should be repaired", sqlstate:"145", errornum:"HY000", statement:"SELECT id FROM actions_daily WHERE user_id = ? AND module_id = ? AND course_id = ? AND day = '2024-07-22'", elapsed:0.002001

In file C:\xampp\htdocs\eclass\include\action.php on line 71 : Unable to execute statement:"Table '.\eclass\actions_daily' is marked as crashed and should be repaired", sqlstate:"145", errornum:"HY000", statement:"INSERT INTO actions_daily SET user_id = ?, module_id = ?, course_id = ?, hits = 1, duration = 900, day = '2024-07-22' , last_update = NOW() ", elapsed:0.002

Αρχειοθετημένη Πλατφόρμα Τηλεκπαίδευσης Πανεπιστημίου Θεσσαλίας | Εισαγωγή στη C# | Enums
Enums

Τύποι Enums

Ένας τύπος enum (συχνά και enumaration - απαρίθμηση) παρέχει έναν αποτελεσματικό τρόπο για να ορίσουμε ένα σετ από ονοματισμένες σταθερές που μπορούν να ορίσουν τιμή σε μια μεταβλητή. Για παράδειγμα, υποθέστε πως πρέπει να ορίσετε σταθερές οι οποίες θα αντιπροσωπεύουν κάθε μέρα της βδομάδας. Υπάρχουν μόνο 7 τιμές με το αντίστοιχο νόημα όπου κάθε σταθερά θα πρέπει να αποθηκεύσει. Για να ορίσετε αυτές τις τιμές, μπορείτε να χρησιμοποιήσετε enum ως ακολούθως:

enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

Ως εξ ορισμού, κάθε στοιχείο αντιπροσωπεύεται με τον τύπο int. Μπορείτε να ορίσετε έναν άλλον απαριθμητό τύπο χρησιμοποιώντας άνω και κάτω τελεία. Πχ

enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
    };

Τα παρακάτω είναι πλεονεκτήματα των enums έναντι των αριθμητικών τύπων:

  • Διευκρινέζετε σαφώς στον κώδικα ποιες τιμές είναι αποδεκτές για μια μεταβλητή
  • Στο visual Studio, η InteliSense απαριθμεί τις ορισμένες τιμές

Όταν δεν ορίζει κανείς τιμές για τα στοιχεία της λίστας στο enum, οι τιμές αυξάνουν αυτόματα κατά ένα. Στο προηγούμενο παράδειγμα, το στοιχείο Days.Sunday έχει τιμή 0, Days.Monday τιμή 1 κλπ.

Στο επόμενο παράδειγμα η μεταβλητή meetingDay είναι τύπου Days, οπότε μπορεί να πάρει τιμές που έχουν οριστεί μόνο στο enum Days. Και αν θέλουμε να αλλάξει αυτή η τιμή, μπορούμε να την αλλάξουμε όπως φαίνεται στο παράδειγμα:

Days meetingDay = Days.Monday;
//...
meetingDay = Days.Friday;

Μπορούμε να ορίσουμε τιμές για τα στοιχεία στο enum και να αφήσουμε τις άλλες να υπολογιστούν ή να μπουν αυτόματα

enum MachineState
{
    PowerOff = 0,
    Running = 5,
    Sleeping = 10,
    Hibernating = Sleeping + 5
}

Επίσης μπορούμε να ορίσουμε μια τιμή σε σταθερά με αυτές που ακολουθούν να παίρνουν πάντα την προηγούμενη τιμή +1

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};