![Page 1: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/1.jpg)
Uvod v C#Drugi del
![Page 2: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/2.jpg)
Dedovanje
![Page 3: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/3.jpg)
Sintaksa
![Page 4: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/4.jpg)
Prirejanje in preverjanje tipov
![Page 5: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/5.jpg)
Kaste preverjenih tipov
![Page 6: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/6.jpg)
Prekrivanje metod
![Page 7: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/7.jpg)
Dinamično povezovanje (poenostavljeno)
![Page 8: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/8.jpg)
Skrivanje
![Page 9: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/9.jpg)
Dinamično povezovanje (s skrivanjem)
![Page 10: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/10.jpg)
Fragile base class problem
![Page 11: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/11.jpg)
Konstruktorji in dedovanje
![Page 12: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/12.jpg)
Vidnost protected in internal
![Page 13: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/13.jpg)
Abstraktni razredi
![Page 14: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/14.jpg)
Abstraktne lastnosti in indekserji
![Page 15: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/15.jpg)
Zapečateni razredi
![Page 16: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/16.jpg)
Vmesniki (interfaces)
![Page 17: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/17.jpg)
Sintaksa
![Page 18: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/18.jpg)
Implementacija vmesnikov
![Page 19: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/19.jpg)
Delo z vmesniki
![Page 20: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/20.jpg)
Primer
![Page 21: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/21.jpg)
Delegati in dogodki
![Page 22: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/22.jpg)
Delegati
Delegates are reference types which allow indirect calls to methods.
A delegate instance holds references to some number of methods, and by invoking the delegate one causes all of these methods to be called.
The usefulness of delegates lies in the fact that the functions which invoke them are blind to the underlying methods they thereby cause to run (see, for instance, the discussion of events, below).
![Page 23: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/23.jpg)
Delegati
From this brief description, it can be seen that delegates are functionally rather similar to C++'s 'function pointers'.
However, it is important to bear in mind two main differences. Firstly, delegates are reference types rather than value types. Secondly, some single delegates can reference multiple methods
![Page 24: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/24.jpg)
Delegate Declaration and Instantiation
Each delegate is limited to referencing methods of a particular kind only. The type is indicated by the delegate declaration - the input parameters and return type given in the delegate declaration must be shared by the methods its delegate instances reference.
To illustrate this: a delegate specified as below can be used to refer only to methods which have a single String input and no return value:
public delegate void Print (String s);
![Page 25: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/25.jpg)
Suppose, for instance, that a class contains the following method:
public void realMethod (String myString) {
// method code
}
Another method in this class could then instantiate the 'Print' delegate in the following way, so that it holds a reference to 'realMethod':
Print delegateVariable = new Print(realMethod);
![Page 26: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/26.jpg)
Razredi - dogodki• Jezikovna podpora dogodkom• Ključna beseda event nam omogoča določiti delegata, ki bo ustrezal
poklicanim metodam ob nastopu nekega dogodka.
public event AlarmEventHandler Alarm;
• Dogodek sprožimo s klicem dogodka
Alarm();
• Odjemalci se prijavijo na dogodek z operatorjem +=
eventSource.Alarm += new AlarmEventHandler(eventListener.AlarmRang);
![Page 27: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/27.jpg)
Deklaracija delegata, prireditev metode delegatu
![Page 28: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/28.jpg)
Prirejanje različnih metod
![Page 29: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/29.jpg)
Creating a delegate value
![Page 30: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/30.jpg)
Multicast delegati
![Page 31: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/31.jpg)
Events = Special Delegate Variables
![Page 32: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/32.jpg)
Izjeme (exceptions)
![Page 33: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/33.jpg)
Stavek try
![Page 34: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/34.jpg)
System.Exception
![Page 35: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/35.jpg)
Throwing an Exception
![Page 36: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/36.jpg)
Hierarhija izjem
![Page 37: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/37.jpg)
Searching for a catch Clause
![Page 38: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/38.jpg)
No Throws Clause in Method Signature
![Page 39: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/39.jpg)
Namespaces and Assemblies
![Page 40: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/40.jpg)
C# Namespaces vs. Java Packages
![Page 41: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/41.jpg)
Namespaces vs. Packages (continued)
![Page 42: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/42.jpg)
Assemblies
![Page 43: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/43.jpg)
Kako se tvorijo assemblies
![Page 44: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/44.jpg)
Opcije prevajalnika
![Page 45: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/45.jpg)
Opcije prevajalnika
![Page 46: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/46.jpg)
Primeri prevajanj
![Page 47: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/47.jpg)
Atributi
![Page 48: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/48.jpg)
Atributi• Atributi so deklarativni elementi jezika
– pridevniki so na primer tudi deklarativni elementi– omogočajo dekoracijo elementov kode z dodatno informacijo
• assembly, modul, tip, član tipa, return value, parameter
• Atributi posplošujejo koncept deklarativnega elementa– atributi niso omejeni na vnaprej določeno množico– lahko se zmišljujemo svoje nove atribute– atributi in njihove vrednosti so dosegljivi v času prevajanja in v času izvajanja
[Obsolete("This class is obsolete")]class A{
public void F() {}}
![Page 49: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/49.jpg)
Atributi
![Page 50: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/50.jpg)
Atribut s parametri
![Page 51: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/51.jpg)
AtributiNekateri vnaprej definirani atributi
Ime atributa Opis
Browsable Vključenost lastnosti v okno lastnosti
SerializableDoloča naj bo razred ali struktura serializabilna
Obsolete Določa, da je nek element kode zastarel
ConditionalDoloča vključenost metode v odvisnosti od predproc. simbola
![Page 52: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/52.jpg)
AtributiZgled uporabe atributa Conditional
#define Debugpublic class Debug { [Conditional("Debug")] public static void Assert(bool cond, String s) { if (!cond) { throw new AssertionException(s); } } void DoSomething() { ... // If Debug is not defined, the next line is // not even called Assert((x == y), “X should equal Y”); ... }}
![Page 53: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/53.jpg)
Še en primer: atribut Conditional
![Page 54: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/54.jpg)
Tvoji lastni atributi
![Page 55: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/55.jpg)
Niti (threads)
![Page 56: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/56.jpg)
Sodelujoče niti (participating threads)
![Page 57: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/57.jpg)
Primer
![Page 58: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/58.jpg)
Stanja niti
![Page 59: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/59.jpg)
Primer za Join
![Page 60: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/60.jpg)
Medsebojno izobčenje (sinhronizacija)
![Page 61: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/61.jpg)
Razred Monitor
![Page 62: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/62.jpg)
Wait in Pulse
![Page 63: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/63.jpg)
Primer: sinhroniziran medpomnilnik
![Page 64: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/64.jpg)
Komentarji XML
![Page 65: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/65.jpg)
Posebni komentarji (podobno javadoc)
![Page 66: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/66.jpg)
Primer komentirane kode
![Page 67: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/67.jpg)
Tvorjena XML datoteka
![Page 68: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/68.jpg)
XML oznake (XML tags)
![Page 69: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/69.jpg)
Povzetek C#
![Page 70: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/70.jpg)
Odprtokodni c#MCS: The Ximian C# compilerThe Mono C# compiler is considered feature C# 1.0 complete at this point and mature. MCS is able to compile itself and many more C# programs (there is a test suite included that you can use). It is routinely used to compile Mono, roughly 1.7 million lines of C# code.
The compiler is also fairly fast. On a IBM ThinkPad t40 it compiles 18,000 lines of C# code per second.
Work on C# 2.0 has started: some pieces of it are available on the standard compiler with the -2 switch (iterators, method conversions) and some others are available on the `gmcs' branch on CVS (generics)
Obtaining MCSThe Mono C# compiler is part of the `mcs' module in the Mono CVS you can get it from our Anonymous CVS server, or you can get nightly download page.
![Page 71: Uvod v C# Drugi del. Dedovanje Sintaksa Prirejanje in preverjanje tipov](https://reader036.vdocuments.us/reader036/viewer/2022081504/5697bf921a28abf838c8f419/html5/thumbnails/71.jpg)
Mono razhroščevalnik