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.002

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# | Structs
Structs

Η struct είναι μια δομή όπου μπορεί να περιέχει constructors, σταθερές, μεταβλητές, μεθόδους, ιδιότητες, indexers, events και εμφωλευμένους τύπους. Μια τυπική δήλωση struct μπορεί να έχει την παρακάτω μορφή

public struct myStruct
    {
        
    }

Παρατηρήσεις

Ο τύπος struct είναι κατάλληλος για να αντιπροσωπεύει ελεφρά αντικείμενα όπως Point, Rectangle και Color. Αν και είναι δυνατόν το αντικείμενο πχ Point να παρασταθεί με μια κλάση, η Struct είναι αποτελεσματικότερη σε μερικές περιπτώσεις. Για παράδειγμα, αν δηλώσεις έναν πίνακα με 1000 Point αντικείμενα, θα δεσμεύσεις επιπλέον μνήμη για να κάνεις αναφορά (reference) σε κάθε αντικείμενο. Σε αυτήν την περίπτωση, η struct είναι λιγότερο ακριβή.

Είναι λάθος να δηλώνει κανείς έναν constructor χωρίς ορίσματα για μια struct. Αυτός ο default constructor χρησιμοποιείται πάντοτε για να αρχικοποιήσει τις μεταβλητές με τις default τιμές τους.

Είναι λάθος να αρχικοποιήσει κανείς μια μεταβλητή μέσα στην struct.

Όταν κάποιος δημιουργεί ένα αντικείμενο struct χρησιμοποιώντας το new, δημιουργείται και ο κατάληλος constructor καλείται. Σε αντίθεση με τις κλάσεις, οι structs μπορούν να αρχικοποιηθούν και να αποκτήσουν υπόσταση χωρίς το new. Αν δεν χρησιμοποιήσετε το new, τα πεδία θα παραμείνουν ανεκχώρητα (χωρίς τιμή) και το αντικείμενο δεν θα μπορεί να χρησιμοποιηθεί μέχρι όλα τα πεδία να αρχικοποιηθούν.

Παράδειγμα 1

Στο παρακάτω παράδειγμα δείχνεται πως αρχικοποιείται μια struct με τον default και παραμετροποιημένο contructor

// Δήλωση και αρχικοποίηση
public struct Point 
{
   public int x, y;

   public Point(int p1, int p2) 
   {
      x = p1;
      y = p2;    
   }
}

class MainClass 
{
   public static void Main()  
   {
      // Initialize:   
      Point myPoint = new Point();
      Point yourPoint = new Point(10,10);

      // Προβολή αποτελεσμάτων:
      Console.Write("My Point:   ");
      Console.WriteLine("x = {0}, y = {1}", myPoint.x, myPoint.y);
      Console.Write("Your Point: ");
      Console.WriteLine("x = {0}, y = {1}", yourPoint.x, yourPoint.y);
   }
}

Έξοδος:
My Point: x = 0, y = 0 Your Point: x = 10, y = 10

Παράδειγμα 2

Αυτό το παράδειγμα δείχνει μια μοναδική λειτουργία για τις struct. Την δημιουργία αντικειμένου struct χωρίς το new. Αν αντικαταστήσετε το struct με class δεν θα γίνει compile.

public struct Point 
{
   public int x, y;

   public Point(int x, int y) 
   {
      this.x = x;
      this.y = y; 
   }
}

class MainClass 
{
   public static void Main() 
   {
      // Declare an object:
      Point myPoint;

      // Initialize:
      myPoint.x = 10;
      myPoint.y = 20;

      // Display results:
      Console.WriteLine("My Point:");
      Console.WriteLine("x = {0}, y = {1}", myPoint.x, myPoint.y);
   }
}