C#

C# – Fájlba írás (StreamWriter)

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

internal class Program
{
    /* Írás fájlba */
    public static void Iras(List<Class> lista)
    {
        // FileStream létrehozása (filenév, FileMode.Create felülírja a fájlt, ha létezik)
        FileStream fs = new FileStream("file.txt", FileMode.Create);
        // StreamWriter létrehozása (FileStream, kódolás)
        StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
        // Fejléc írása
        sw.WriteLine("Header");
        // Lista elemeinek írása
        foreach (var item in lista)
        {
            sw.WriteLine($"{item.Property1};{item.Property2}");
        }
        // Fájl lezárása
        sw.Close();
        fs.Close();
    }

    public static void Feladat3(List<Class> lista)
    {
        Console.WriteLine("3. feladat");
        Console.WriteLine($"A lista elemeinek száma: {lista.Count}");
    }

    static void Main(string[] args)
    {
        // Példa lista
        List<Class> adatok = new List<Class>
        {
            new Class("Adat1", "Value1"),
            new Class("Adat2", "Value2")
        };
        Iras(adatok);
        Feladat3(adatok);
        Console.ReadKey();
    }
}

// Példa Class
public class Class
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }

    public Class(string prop1, string prop2)
    {
        Property1 = prop1;
        Property2 = prop2;
    }
}

C# – Fájlbeolvasás (StreamReader)

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Linq;

internal class Program
{
    public static List<Class> Beolvas()
    {
        var lista = new List<Class>();
        // Fájl megnyitása olvasásra
        FileStream fs = new FileStream("file.txt", FileMode.Open);
        StreamReader sr = new StreamReader(fs, Encoding.UTF8);
        // Fejléc átugrása
        sr.ReadLine();
        while (!sr.EndOfStream)
        {
            string sor = sr.ReadLine();
            var parts = sor.Split(';');
            lista.Add(new Class(parts[0], parts.Length > 1 ? parts[1] : ""));
        }
        sr.Close();
        fs.Close();
        return lista;
    }

    public static void Feladat3(List<Class> lista)
    {
        Console.WriteLine("3. feladat");
        Console.WriteLine($"A beolvasott adatsorok száma: {lista.Count()}");
    }

    static void Main(string[] args)
    {
        var adatok = Beolvas();
        Feladat3(adatok);
        Console.ReadKey();
    }
}

// Példa Class
public class Class
{
    public string Property1 { get; set; }
    public Class(string prop1) { Property1 = prop1; }
}

C# – Szótár használata (Dictionary)

using System;
using System.Collections.Generic;

public static void BuildDictionary(List<Class> lista)
{
    var dict = new Dictionary<string, int>();
    foreach (var item in lista)
    {
        if (dict.ContainsKey(item.StringAdat))
            dict[item.StringAdat]++;
        else
            dict[item.StringAdat] = 1;
    }

    Console.WriteLine("Dictionary tartalma:");
    foreach (var kvp in dict)
        Console.WriteLine($"{kvp.Key} – {kvp.Value}");
}

C# WPF/Konzol – FileDialog használata

/* OpenFileDialog (WPF): */
private void Megnyit(object sender, RoutedEventArgs e)
{
    var ofd = new OpenFileDialog
    {
        Title = "Válasszon egy fájlt!",
        Filter = "Szöveges fájlok|*.txt|WORD dokumentumok|*.docx;*.doc|Minden fájl|*.*"
    };
    if (ofd.ShowDialog() == true)
    {
        string utvonal = ofd.FileName;
        using var fs = new FileStream(utvonal, FileMode.Open);
        // További beolvasás...
    }
    else
    {
        MessageBox.Show("Nincs kiválasztott fájl!", "Hiba", MessageBoxButton.OK, MessageBoxImage.Error);
    }
}

/* SaveFileDialog (WPF): */
private void Ment(object sender, RoutedEventArgs e)
{
    var sfd = new SaveFileDialog
    {
        Title = "Mentés másként",
        Filter = "Szöveges fájl|*.txt|CSV fájl|*.csv"
    };
    if (sfd.ShowDialog() == true)
    {
        string utvonal = sfd.FileName;
        using var sw = new StreamWriter(new FileStream(utvonal, FileMode.Create), Encoding.UTF8);
        sw.WriteLine("Ez a sor ki lett írva a fájlba.");
    }
    else
    {
        MessageBox.Show("Nincs kiválasztott fájl!", "Hiba", MessageBoxButton.OK, MessageBoxImage.Error);
    }
}

C# WPF – Ablak beállítások és Grid

<Window
    Title="AblakNeve"
    Height="450"
    Width="800"
    MinWidth="300"
    MaxHeight="500"
    WindowStartupLocation="CenterScreen"
    WindowState="Maximized">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="3*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="5*" />
        </Grid.ColumnDefinitions>

        <Button
            x:Name="Gomb2"
            Content="Felirat"
            Grid.Row="0"
            Grid.Column="0"
            Grid.RowSpan="2"
            Grid.ColumnSpan="2" />
    </Grid>
</Window>

C# WPF – Vezérlők definiálása XAML-ben

<Label Content="Szöveg:" />

<TextBox x:Name="Tbox1" />

<DataGrid x:Name="dgrid" AutoGenerateColumns="True" />

<Button x:Name="Gomb1" Content="Küldés" Width="100" Height="20" />

<TextBox x:Name="Tbox" Margin="0,10,20,30" />

<Button Content="Felirat" Width="50" Height="20" />
<Button>Felirat</Button>
<Button>
    <Button.Content>Felirat</Button.Content>
</Button>

C# WPF – Vezérlők elérése kódból

// TextBox módosítása
TextBoxNev.Text = "Szöveg";
TextBoxNev.IsEnabled = false;

// Label módosítása
LabelNev.Content = "Tartalom";

// RadioButton / CheckBox állapot
RadioButtonNev.IsChecked = true;
CheckBoxNev.IsChecked = false;

// ListBox / ComboBox
ListBoxNev.Items.Clear();
ListBoxNev.Items.Add("Elem1");
ComboBoxNev.ItemsSource = listaNeve;

// DataGrid
DataGridNev.ItemsSource = listaNeve;
var kijelolt = DataGridNev.SelectedItem;

C# WPF – Több ablak kezelése

// MainWindow.xaml.cs
public partial class MainWindow : Window
{
    public MainWindow() => InitializeComponent();

    protected override void OnClosed(EventArgs e)
    {
        Application.Current.Shutdown();
    }

    private void Ugras(object sender, RoutedEventArgs e)
    {
        var masik = new MasikAblak(this);
        this.Hide();
        masik.Show();
    }
}

// MasikAblak.xaml.cs
public partial class MasikAblak : Window
{
    private MainWindow mw;

    public MasikAblak(MainWindow mw)
    {
        InitializeComponent();
        this.mw = mw;
    }

    protected override void OnClosed(EventArgs e)
    {
        this.Close();
        mw.Show();
    }

    private void UgrasVissza(object sender, RoutedEventArgs e)
    {
        this.Close();
        mw.Show();
    }
}

C# WPF – MessageBox használata

MessageBox.Show(
    "Szöveg",
    "Cím",
    MessageBoxButton.OK,
    MessageBoxImage.Information
);

C# – SQL kapcsolat és műveletek

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;

// Kapcsolat kezelő osztály
class DBConnect
{
    private MySqlConnection con;

    public DBConnect(string host, string dbname, string ui, string pw)
    {
        con = new MySqlConnection(
            $"Database={dbname};Data Source={host};User Id={ui};Password={pw};"
        );
    }

    private bool Connect()
    {
        try { con.Open(); return true; }
        catch { return false; }
    }

    private bool ConnectClose()
    {
        try { con.Close(); return true; }
        catch { return false; }
    }

    public void InsertData(TesztOsztaly temp)
    {
        if (Connect())
        {
            string query = "INSERT INTO teszttabla (nev, kor) VALUES (@nev, @kor)";
            var cmd = new MySqlCommand(query, con);
            cmd.Parameters.AddWithValue("@nev", temp.Nev);
            cmd.Parameters.AddWithValue("@kor", temp.Kor);
            cmd.ExecuteNonQuery();
            ConnectClose();
        }
    }

    public List<TesztOsztaly> SelectAll()
    {
        var adatok = new List<TesztOsztaly>();
        if (Connect())
        {
            var cmd = new MySqlCommand("SELECT * FROM teszttabla", con);
            var reader = cmd.ExecuteReader();
            while (reader.Read())
                adatok.Add(new TesztOsztaly(
                    reader.GetInt32(0),
                    reader.GetString(1),
                    reader.GetInt32(2)
                ));
            ConnectClose();
        }
        return adatok;
    }

    public double AtlagKor()
    {
        double avg = 0;
        if (Connect())
        {
            var cmd = new MySqlCommand("SELECT AVG(kor) FROM teszttabla", con);
            var result = cmd.ExecuteScalar();
            if (result != null) avg = Convert.ToDouble(result);
            ConnectClose();
        }
        return avg;
    }
}

// Gomb esemény
private void OnButtonClick(object sender, RoutedEventArgs e)
{
    var db = new DBConnect("127.0.0.1", "teszt", "root", "");
    db.InsertData(new TesztOsztaly("JÓNÁS", 18));
    var all = db.SelectAll();
    datagrid.ItemsSource = all;
    MessageBox.Show($"Átlag kor: {db.AtlagKor()}", "Eredmény");
}

// TesztOsztaly
class TesztOsztaly
{
    public int Id { get; set; }
    public string Nev { get; set; }
    public int Kor { get; set; }

    public TesztOsztaly(int id, string nev, int kor) { Id = id; Nev = nev; Kor = kor; }
    public TesztOsztaly(string nev, int kor) { Nev = nev; Kor = kor; }
}

C# – Származtatott osztályok példa

// Alap osztály
class Animal
{
    public void Eat()  => Console.WriteLine("Az állat eszik.");
    public void Sleep() => Console.WriteLine("Az állat alszik.");
}

// Származtatott osztályok
class Dog : Animal
{
    public void Bark() => Console.WriteLine("A kutya ugat: Vau vau!");
}

class Cat : Animal
{
    public void Meow() => Console.WriteLine("A macska nyávog: Miaú!");
}

class Program
{
    static void Main()
    {
        var myDog = new Dog();
        myDog.Eat();
        myDog.Bark();

        var myCat = new Cat();
        myCat.Sleep();
        myCat.Meow();
    }
}

C# – Típus kényszerítés (Type Casting)

double doubleNumber = 8.79;
int intNumber = (int)doubleNumber;  // eredmény: 8

C# – Absztrakt osztályok és metódusok

using System;

// Absztrakt osztály
abstract class Vehicle
{
    public abstract void Start();
    public void Stop() => Console.WriteLine("A jármű megállt.");
}

// Leszármazottok
class Car : Vehicle
{
    public override void Start() => Console.WriteLine("Az autó kulccsal indul.");
}

class Bicycle : Vehicle
{
    public override void Start() => Console.WriteLine("A bicikli pedálozással indul.");
}

class Program
{
    static void Main()
    {
        Vehicle myCar = new Car();
        myCar.Start();
        myCar.Stop();

        Vehicle myBike = new Bicycle();
        myBike.Start();
        myBike.Stop();
    }
}

C# – Math osztály metódusai

Math.Sqrt(number);    // négyzetgyök
Math.Abs(number);     // abszolút érték
Math.Round(number);   // kerekítés
Math.Ceiling(number); // felfelé kerekítés
Math.Floor(number);   // lefelé kerekítés

C# – HashSet duplikációszűrés

using System;
using System.Collections.Generic;

var nevekLista = new List<string> { "név", "név2", "név3", "név" };
var egyediNevek = new HashSet<string>(nevekLista);

Console.WriteLine("Egyedi nevek:");
foreach (var nev in egyediNevek)
    Console.WriteLine(nev);

C# – Véletlenszám generálás (Random)

var rnd = new Random();

// Egész szám 5–14 között
int szamInt = rnd.Next(5, 15);

// Lebegőpontos szám 0–1 között
double szamDouble = rnd.NextDouble();

// Logikai érték
bool logikai = rnd.Next(2) == 0;

C# – Alapvető adattípusok

int intNumber = 5;              // egész szám
double doubleNumber = 3.79;       // lebegőpont
char egyKarakter = 'D';           // karakter
bool myBool = true;               // logikai
string valamiSzoveg = "szöveg";   // szöveg