C# Verständnisfrage

Gast #5067196
Hallo,

bin keine C# Experte und ich habe folgenden Code vor mir und verstehe 
den zweifach parametrisierten Kontruktor nicht.
Um diesen zu nutzen was muss ich da übergeben und welchen Zweck hat das 
ganze?

public class Communication : IDisposable
    {
        private SerialPort sp;
        public delegate void N_Line(String s);
        private N_Line n_Line;

  //Contructor
        public Communication(String comport, N_Line n_LineDelegate)
            : this(comport)
        {
            n_Line += n_LineDelegate;
        }

        public Communication(String comport)
        {
            sp = new SerialPort(comport);
        }
Gast
Mario schrieb:
> Um diesen zu nutzen was muss ich da übergeben und welchen Zweck hat das
> ganze?

ist doch offensichtlich. Um das Objekt zu verwenden muss man entweder 
einen Comport übergeben oder Comport + LineDelegate.
Gast
Hallo Mario,
der Konstruktor erwartet eine Funktion mit der Signatur, die zum 
Delegate passt. Hier mal ein Beispiel.
1
    class Program
2
    {
3
        static void Main(string[] args)
4
        {
5
            Communication com = new Communication("COM1", RufMichAn);
6
            com.RufMalAn("Hallo...");
7

8
            Console.WriteLine("Mach mal Pause...");
9
            Console.ReadKey();
10
        }
11

12
        static void RufMichAn(string s)
13
        {
14
            Console.WriteLine(s);
15
        }
16
    }
17

18
    public class Communication
19
    {
20
        public delegate void N_Line(String s);
21

22
        private SerialPort sp;
23
        private N_Line     n_Line;
24

25
        public Communication(String comport, N_Line n_LineDelegate) : this(comport)
26
        {
27
            n_Line += n_LineDelegate;
28
        }
29

30
        public Communication(String comport)
31
        {
32
            sp = new SerialPort(comport);
33
        }
34

35
        public void RufMalAn(string s)
36
        {
37
            n_Line(s);
38
        }
39
    }
40

41
    public class SerialPort
42
    {
43
        public SerialPort(String comport)
44
        {
45

46
        }
47
    }

MfG Sven
Gast
1
class Foo
2
{
3
  public void Bar()
4
  {
5
    var comA = new Communication(@"\\.\COM42", blub);
6
    var comB = new Communication(@"\\.\COM99", bla);
7
  }
8

9
  private void blub(string s)
10
  {
11
    // ...
12
  }
13

14
  private void bla(string s) => Console.WriteLine(s);
15
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.