„Sznikák példakódok” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
(Kód javítása)
a (ConsoleColor nevű osztályt nem találja a VS-2017, helyette Color lett.)
 
(11 közbenső módosítás, amit egy másik szerkesztő végzett, nincs mutatva)
10. sor: 10. sor:
 
}}
 
}}
 
}}
 
}}
 +
<syntaxhighlight lang="csharp">
 
  class ThreadTestClass
 
  class ThreadTestClass
 
  {  
 
  {  
37. sor: 38. sor:
 
     }  
 
     }  
 
  }
 
  }
 
+
</syntaxhighlight>
  
 
{{Infobox
 
{{Infobox
49. sor: 50. sor:
 
}}
 
}}
 
}}
 
}}
 +
<syntaxhighlight lang="csharp">
 
  SqlConnection conn = null;  
 
  SqlConnection conn = null;  
 
  try  
 
  try  
 
  {  
 
  {  
 
     // Kapcsolódás azadatbázishoz  
 
     // Kapcsolódás azadatbázishoz  
     conn = new SqlConnection(@"Data Source=LAPTOP\SQLEXPRESS;InitialCatalog=Northwind;Integrated Security=True");  
+
     conn = new SqlConnection(@"Data Source=LAPTOP\SQLEXPRESS;
 +
          InitialCatalog=Northwind;Integrated Security=True");  
 
     // A kapcsolat megnyitása  
 
     // A kapcsolat megnyitása  
 
     conn.Open();  
 
     conn.Open();  
83. sor: 86. sor:
 
       conn.Close();  
 
       conn.Close();  
 
  }
 
  }
 
+
</syntaxhighlight>
  
 
{{Infobox
 
{{Infobox
95. sor: 98. sor:
 
}}
 
}}
 
}}
 
}}
 +
<syntaxhighlight lang="csharp">
 
  public partial class MainForm : Form
 
  public partial class MainForm : Form
 
  {
 
  {
115. sor: 119. sor:
 
     }
 
     }
 
  }
 
  }
 
+
</syntaxhighlight>
  
 
{{Infobox
 
{{Infobox
127. sor: 131. sor:
 
}}
 
}}
 
}}
 
}}
 +
<syntaxhighlight lang="csharp">
 
  public partial class Form1 : Form
 
  public partial class Form1 : Form
 
  {
 
  {
     private Brush brush1;
+
     private Brush brush;
 
     private int grey = 200;
 
     private int grey = 200;
 
   
 
   
141. sor: 146. sor:
 
       base.OnKeyDown(e);
 
       base.OnKeyDown(e);
 
       if(e.KeyCode == Keys.R) {
 
       if(e.KeyCode == Keys.R) {
 +
          grey -= 10;
 
           if(grey == 0) // ha elértük a színtartomány végét
 
           if(grey == 0) // ha elértük a színtartomány végét
 
             grey = 200;
 
             grey = 200;
          grey -= 10;
 
 
           Invalidate();
 
           Invalidate();
 
       }
 
       }
151. sor: 156. sor:
 
     {
 
     {
 
       base.OnPaint(e);
 
       base.OnPaint(e);
       using (brush1 = new SolidBrush(ConsoleColor.FromArgb(grey, grey, grey)))
+
       using (brush = new SolidBrush(Color.FromArgb(grey, grey, grey)))
 
       {
 
       {
           e.Graphics.FillRectrangle(brush1, 10, 20, 10+10, 20+10);
+
           e.Graphics.FillRectrangle(brush, 10, 20, 10, 10); // brush, x, y, width, height
 
       }
 
       }
 
     }
 
     }
 
  }
 
  }
 
+
</syntaxhighlight>
  
 
{{Infobox
 
{{Infobox
169. sor: 174. sor:
 
}}
 
}}
 
}}
 
}}
  DateTime lastClick;
+
<syntaxhighlight lang="csharp">
String strDeltaTime;
+
  public partial class Form1 : Form
 +
{
 +
    DateTime lastClick;
 +
    String strDeltaTime;
 
   
 
   
private void Form1_Load(object sender, EventArgs e)
+
    public Form1()
{
+
    {
    lastClick = DateTime.Now;
+
      InitializeComponent();
    strDeltaTime = "0";
+
      this.MouseClick += new MouseEventHandler(Form1_MouseClick);
}
+
     
 +
      lastClick = null;
 +
      strDeltaTime = "0";
 +
    }
 
   
 
   
private void Form1_MouseClick(object sender, MouseEventArgs e)
+
    private void Form1_MouseClick(object sender, MouseEventArgs e)
{
+
    {
    TimeSpan deltaTime = DateTime.Now.Subtract(lastClick);
+
      if (lastClick = null)
    lastClick = DateTime.Now;
+
          lastClick = DateTime.Now;
    strDeltaTime = deltaTime.Seconds.ToString();
+
      else
    Invalidate(); // érvényteleníteni kell az ablak területet, hogy az új érték látszódjon
+
      {
}
+
          TimeSpan deltaTime = DateTime.Now.Subtract(lastClick);
 +
          lastClick = DateTime.Now;
 +
          strDeltaTime = deltaTime.Seconds.ToString();
 +
          Invalidate(); // érvényteleníteni kell az ablak területet, hogy az új érték látszódjon
 +
      }
 +
    }
 
   
 
   
protected override void OnPaint(PaintEventArgs e) {
+
    protected override void OnPaint(PaintEventArgs e)
    e.Graphics.DrawString(strDeltaTime, this.Font, new SolidBrush(Color.Black), 20, 20);
+
    {
    base.OnPaint(e);
+
      e.Graphics.DrawString(strDeltaTime, this.Font, new SolidBrush(Color.Black), 20, 20);
 +
      base.OnPaint(e);
 +
    }
 
  }
 
  }
 
+
</syntaxhighlight>
  
 
{{Infobox
 
{{Infobox
197. sor: 215. sor:
 
| keretszín = black
 
| keretszín = black
 
| tartalom =
 
| tartalom =
Írjon programot, ami egy háttérszálban egy perc alatt aszámol 1-zől 60-ig és az aktuális értéket kiírja a konzolra
+
Írjon programot, ami egy háttérszálban egy perc alatt el számol 1-től 60-ig, és az aktuális értéket kiírja a konzolra.
 
{{Infobox-táblázat|
 
{{Infobox-táblázat|
 
{{Infobox-táblázatsor|A kód nyelve|C#}}
 
{{Infobox-táblázatsor|A kód nyelve|C#}}
 
}}
 
}}
 
}}
 
}}
 +
<syntaxhighlight lang="csharp">
 
  public class Program
 
  public class Program
 
  {
 
  {
222. sor: 241. sor:
 
     }
 
     }
 
  }
 
  }
 
+
</syntaxhighlight>
  
 
{{Infobox
 
{{Infobox
234. sor: 253. sor:
 
}}
 
}}
 
}}
 
}}
 +
<syntaxhighlight lang="csharp">
 
  public class Singleton
 
  public class Singleton
 
  {
 
  {
252. sor: 272. sor:
 
     public void Print() {/* ... */}
 
     public void Print() {/* ... */}
 
  }
 
  }
 +
</syntaxhighlight>
  
 +
<syntaxhighlight lang="csharp">
 
  // Használata:
 
  // Használata:
 
  Singleton s1 = Singleton.Instance;
 
  Singleton s1 = Singleton.Instance;
258. sor: 280. sor:
 
  // Vagy:
 
  // Vagy:
 
  Singleton.Instance.Print();
 
  Singleton.Instance.Print();
 
+
</syntaxhighlight>
  
 
{{Infobox
 
{{Infobox
270. sor: 292. sor:
 
}}
 
}}
 
}}
 
}}
 +
<syntaxhighlight lang="csharp">
 
  class SelectIntoDataSet{
 
  class SelectIntoDataSet{
 
     public static void Main(){
 
     public static void Main(){
300. sor: 323. sor:
 
     }
 
     }
 
  }
 
  }
 
+
</syntaxhighlight>
  
 
{{Infobox
 
{{Infobox
312. sor: 335. sor:
 
}}
 
}}
 
}}
 
}}
 +
<syntaxhighlight lang="csharp">
 
  [AttributeUsage(AttributeTargets.All)]
 
  [AttributeUsage(AttributeTargets.All)]
 
  public class AuthorAttribute : System.Attribute
 
  public class AuthorAttribute : System.Attribute
330. sor: 354. sor:
 
     }
 
     }
 
  }
 
  }
 +
</syntaxhighlight>
  
 +
<syntaxhighlight lang="csharp">
 
  // Használata
 
  // Használata
 
  [Author("Béla Béla")]
 
  [Author("Béla Béla")]
337. sor: 363. sor:
 
  // ...
 
  // ...
 
  }
 
  }
 +
</syntaxhighlight>
  
 +
<syntaxhighlight lang="csharp">
 
  // Lekérdezés
 
  // Lekérdezés
 
  foreach( object attribute in something.GetCustomAttributes(true))
 
  foreach( object attribute in something.GetCustomAttributes(true))
343. sor: 371. sor:
 
     Console.WriteLine(attribute);
 
     Console.WriteLine(attribute);
 
  }
 
  }
 +
</syntaxhighlight>
  
 
   
 
   
 
   
 
   
  
[[Kategória:Infoalap]]
+
[[Kategória:Mérnök_informatikus]]

A lap jelenlegi, 2018. április 19., 21:38-kori változata

← Vissza az előző oldalra – Szoftvertechnikák
Szál indítása

Mutasson kódrészletet szál indítására

A kód nyelve
C#
 class ThreadTestClass
 { 
    public static void Main(string[] args) 
    { 
       Thread t = null; 
       if (args.Length == 0) 
       { 
          t = new Thread(new ThreadStart(ThreadMethod1)); 
          t.Start(); 
       } 
       else 
       { 
          t = new Thread(new ParameterizedThreadStart(ThreadMethod2)); 
          t.Start(args[0]); 
       }
    }
  
    public static void ThreadMethod1() 
    { 
       Console.WriteLine("Thread without parameter."); 
    } 
 
    public static void ThreadMethod2(object param) 
    { 
       Console.WriteLine("Thread with parameter: {0}", param.ToString()); 
    } 
 }
Kapcsolatalapú hozzáférés

Ismertesse egy rövid C# példán keresztül az ADO.NET kapcsolatalapú adathozzáférést

A kód nyelve
C#
 SqlConnection conn = null; 
 try 
 { 
    // Kapcsolódás azadatbázishoz 
    conn = new SqlConnection(@"Data Source=LAPTOP\SQLEXPRESS;
           InitialCatalog=Northwind;Integrated Security=True"); 
    // A kapcsolat megnyitása 
    conn.Open(); 
    // Az adatbázis parancs létrehozása 
    SqlCommand command = new SqlCommand("SELECT ShipperID, CompanyName, Phone FROM Shippers"); 
    // Adatbázis kapcsolat megadása
    command.Connection = conn; 
    Console.WriteLine("{0,0}{1,15}{2,15}", "ShipperID", "CompanyName", "Phone"); 
    Console.WriteLine("-----------------------------------------------------------------"); 
    // Az adatok lekérdezése és kiiratása 
    using (SqlDataReader reader = command.ExecuteReader()) 
    { 
       while (reader.Read()) 
       Console.WriteLine("{0,4}{1,20}{2,20}", 
                           reader["ShipperID"].ToString(),
                           reader["CompanyName"].ToString(), 
                           reader["Phone"].ToString()); 
    } 
 } 
 catch (Exception ex) 
 {
    // Kivétel szövegének kiiratása 
    Console.WriteLine(ex.Message); 
 } 
 finally 
 { 
    // Az adatbázis kapcsolat lezárása, ha meg lett nyitva 
    if((conn!=null)&&(conn.State==System.Data.ConnectionState.Open)) 
       conn.Close(); 
 }
Eseménykezelés

Írj egy Form alapú programot, ami MessageBox-ban megjeleníti a leütött billentyűt!

A kód nyelve
C#
 public partial class MainForm : Form
 {
    public MainForm()
    {
       InitializeComponent();
       this.KeyDown += new KeyEventHandler(this.MainForm_KeyDown);
    }
 
    protected override void OnKeyDown(KeyEventArgs e)
    {
       // Meghívjuk az eredeti függvényt is
       base.OnKeyDown(e);
       MessageBox.Show("A billentyű (virt. fv.): " + e.KeyCode.ToString());
    }
 
    private void MainForm_KeyDown(object sender, KeyEventArgs e)
    {
       MessageBox.Show("A billentyű (eseménykez.): " + e.KeyCode.ToString());
    }
 }
Négyzet rajzolás

Írjon olyan C# nyelvű alkalmazásrészletet, amely a (10,20) koordinátában megjelenít egy közepesen szürke színnel kitöltött 10 pixel hosszúságú négyzetet. A négyzet színe minden "r" bilentyű megnyomására legyen egyre sötétebb. A megjelenítés GDI-re épüljön.

A kód nyelve
C#
 public partial class Form1 : Form
 {
    private Brush brush;
    private int grey = 200;
 
    public Form1()
    {
       InitializeComponent();
    }
 
    protected override void OnKeyDown(KeyEventArgs e)
    {
       base.OnKeyDown(e);
       if(e.KeyCode == Keys.R) {
          grey -= 10;
          if(grey == 0) // ha elértük a színtartomány végét
             grey = 200;
          Invalidate();
       }
    }
 
    protected override void OnPaint(PaintEventArgs e)
    {
       base.OnPaint(e);
       using (brush = new SolidBrush(Color.FromArgb(grey, grey, grey)))
       {
          e.Graphics.FillRectrangle(brush, 10, 20, 10, 10);  // brush, x, y, width, height
       }
    }
 }
String rajzolás

Írjon olyan C# nyelvű alkalmazásrészletet, ami a (20,20) kokrdinátában megjeleníti, hogy a legutóbbi egérkattintás óta hány másodperc telt el! A megjelenítés GDI-re épüljön.

A kód nyelve
C#
 public partial class Form1 : Form
 {
    DateTime lastClick;
    String strDeltaTime;
 
    public Form1()
    {
       InitializeComponent();
       this.MouseClick += new MouseEventHandler(Form1_MouseClick);
       
       lastClick = null;
       strDeltaTime = "0";
    }
 
    private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
       if (lastClick = null)
          lastClick = DateTime.Now;
       else
       {
          TimeSpan deltaTime = DateTime.Now.Subtract(lastClick);
          lastClick = DateTime.Now;
          strDeltaTime = deltaTime.Seconds.ToString();
          Invalidate(); // érvényteleníteni kell az ablak területet, hogy az új érték látszódjon
       }
    }
 
    protected override void OnPaint(PaintEventArgs e)
    {
       e.Graphics.DrawString(strDeltaTime, this.Font, new SolidBrush(Color.Black), 20, 20);
       base.OnPaint(e);
    }
 }
Háttérszál

Írjon programot, ami egy háttérszálban egy perc alatt el számol 1-től 60-ig, és az aktuális értéket kiírja a konzolra.

A kód nyelve
C#
 public class Program
 {
    public static void Main(string[] args)
    {
       Thread t = new Thread(new ThreadStart(Szamol));
       t.IsBackground = true;
       t.Start();
    }
 
    public static void Szamol()
    {
       int szam = 0;
       while(szam < 60)
       {
          Thread.Sleep(1000);
          szam++;
          Console.WriteLine("A számláló értéke: {0}",szam.ToString());
       }
    }
 }
Singleton példa

Singleton tervezési minta implementálása C# nyelven

A kód nyelve
C#
 public class Singleton
 {
    private static Singleton instance = null;
 
    public static Singleton Instance
    {
       get
       {
          if (instance == null)
             instance = new Singleton();
          return instance;
       }
    }
 
    protected Singleton() {} // Ne lehessen elérni a konstruktorát
 
    public void Print() {/* ... */}
 }
 // Használata:
 Singleton s1 = Singleton.Instance;
 s1.Print();
 // Vagy:
 Singleton.Instance.Print();
Kapcsolat nélküli hozzáférés

Ismertesse egy rövid C# példán keresztül az ADO.NET kapcsolat nélküli adathozzáférését!

A kód nyelve
C#
 class SelectIntoDataSet{
    public static void Main(){
       string connectionString = "...";
       SqlConnection mySqlConnection = new SqlConnection(connectionString);
       
       // Vagy bármi más lekérdezés, amit kérnek
       string selectString = "SELECT TOP 10 ID, FirstName, LastName FROM Employee ORDER BY ID";
       SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
       mySqlCommand.CommandText = selectString;
 
       SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
       mySqlDataAdapter.SelectCommand = mySqlCommand;
 
       DataSet myDataSet = new DataSet();
 
       mySqlConnection.Open();           // Megnyitjuk
       Console.WriteLine("Retrieving rows from the Employee table");
       mySqlDataAdapter.Fill(myDataSet, "Employee");   // Kiolvasunk mindent
       mySqlConnection.Close();          // És rögtön be is zárjuk
 
       // És csak utána kezdjük el feldolgozni
       DataTable myDataTable = myDataSet.Tables["Employee"];
 
       foreach (DataRow myDataRow in myDataTable.Rows){
          Console.WriteLine("ID = "+ myDataRow["ID"]);
          Console.WriteLine("FirstName = "+ myDataRow["FirstName"]);
          Console.WriteLine("LastName = "+ myDataRow["LastName"]);
       }
    }
 }
Attribútumok használata

Mutasson példát attribútumokra C# nyelven (saját attributee létrehozás, használat, lekérdezés)

A kód nyelve
C#
 [AttributeUsage(AttributeTargets.All)]
 public class AuthorAttribute : System.Attribute
 {
    public readonly string name;
 
    public AuthorAttribute(string _name)
    {
       name = _name;
    }
 
    public string Name
    {
       get
       {
          return name;
       }
    }
 }
 // Használata
 [Author("Béla Béla")]
 class JustASimpleClass
 {
 // ...
 }
 // Lekérdezés
 foreach( object attribute in something.GetCustomAttributes(true))
 {
    Console.WriteLine(attribute);
 }