Programski jezik C sharp
C#[a] je večparadigmski programski jezik, ki obsega močno tipizacijo ter imperativno, deklarativno, funkcijsko, generično, komponentno orientirano in objektno orientirano programiranje z zmožnostjo refleksije. Upravljanje s pomnilnikom temelji na čistilniku spomina.[2][3][4]
![]() | |
Paradigma | strukturirana, imperativna, objektno orientirana, na podlagi dogodkov, asinhrona, funkcijska, generična, refleksivna, sočasna |
---|---|
Začetna izdaja | 2001 |
Oblikoval | Microsoft |
Razvijalec | Microsoft |
Stabilna izdaja | 9.0[1] |
Tipizacija | statična, dinamična, močna, varna, nominativna |
Večje implementacije | Visual C#, ogrodje .NET, Mono, .NET Core, UWP |
Dialekti | Cω, Spec#, Polyphonic C#, Enhanced C# |
Vplivi | C, C++, Delphi, Cω, Eiffel, F#, Haskell, Icon, J#, J++, Java, ML, Modula-3, Objektni Pascal, Rust, VB * |
Vplival na | Boo, Cobra, D, F#, Go, Groovy, JavaScript, Julia, Nim, Ruby, Swift |
Običajna končnica datoteke | .cs in .csx |
Spletna stran | csharp.net * |
![]() |
C# se pri skladnji zgleduje po številnih drugih programskih jezikih, najbolj izrazito po C, C++ in javi. Jezik je bil zelo skrbno načrtovan z namenom uporabiti izkušnje pri razvoju drugih programskih jezikov, uporabiti najboljše značilnosti in popraviti nekatere pomanjkljivosti, ki so se pokazale v razvoju teh jezikov. Pomemben primer so generični tipi, katerih specifikacija je v C# bolj dodelana kot v javi, kar omogoča bolje optimizirano strojno kodo, večjo varnost pri definiciji tipov (lažje odkrivanje nekonsistentnosti v času prevajanja) ter striktno upoštevanje kovariančnosti in kontravariančnosti.[5][6]
C# je programski jezik, ki cilja na izvajalsko okolje CLI in s tem ogrodje .NET ter njegove različice kot je Mono. Zaradi tega se programi v C# izvajajo v posebnem izvajalskem okolju in se programska koda v tem jeziku šteje za upravljano kodo. Dele programov napisane v C# je zato enostavno povezovati z deli, ki so napisani v kateremkoli drugem programskem jeziku skladnem s CLI, z obstojem prenosljivih implementacij CLI (npr. Mono ali .NET Core) pa imajo programi napisani v C# tudi zelo dobro prenosljivost med različnimi platformami. Zaradi točne specifikacije programskega jezika in vmesnega jezika (Common intermediate language|CIL), se lahko program napisan v C# neposredno prevede in izvede na drugih okoljih, ne da bi bilo treba za prenosljivost program spreminjati. Zaradi omenjenih značilnosti, jasne in dodelane skladnje, velike izraznosti (možnost uporabe različnih paradigem) je C# eden najbolj priljubljenih programskih jezikov.[7][8]
C# je razvilo podjetje Microsoft v okviru razvoja ogrodja .NET. Jezik sta kot mednarodni standard odobrili organizaciji Ecma (ECMA-334) in ISO (ISO/IEC 23270:2006).
RazličiceUredi
različica | specifikacija | datum | .NET | Visual Studio | ||
---|---|---|---|---|---|---|
ECMA | ISO/IEC | Microsoft | ||||
C# 1.0 | December 2002 | April 2003 | Januar 2002 | Januar 2002 | .NET 1.0 | Visual Studio .NET 2002 |
C# 1.2 | Oktober 2003 | April 2003 | .NET 1.1 | Visual Studio .NET 2003 | ||
C# 2.0 | Junij 2006 | September 2006 | September 2005[b] | November 2005 | .NET 2.0 | Visual Studio 2005 |
C# 3.0 | Brez[c] | Brez | Avgust 2007 | November 2007 |
.NET 2.0 (Razen LINQ/Query Extensions)[9] |
Visual Studio 2008 Visual Studio 2010 |
C# 4.0 | Brez | Brez | April 2010 | April 2010 | .NET 4 | Visual Studio 2010 |
C# 5.0 | V teku[10] | Brez [c] | Junij 2013 | Avgust 2012 | .NET 4.5 | Visual Studio 2012 Visual Studio 2013 |
C# 6.0 | Brez[c] | Brez | Brez | Julij 2015 | .NET 4.6 | Visual Studio 2015 |
ZnačilnostiUredi
Razločevalne značilnostiUredi
Podatkovni tipiUredi
Generični tipiUredi
Generični tipi so bili uvedeni v različici 2.0. Generični tipi uporabljajo tipske parametre, ki omogočajo načrtovanje razredov in metod, ki ne specifirajo natančno vseh uporabljenih tipov na ravni definicije, ampak se to zgodi šele pri instanciaciji razreda oziroma klicu metode.
Zgled:
// Deklaracija generičnega razreda - seznama elementov določenega tipa;
// Tip elementov v tem trenutku ni znan, razred se lahko pozneje uporabi
// kot seznam elementov kateregakoli tipa. N nivoju generične definicije
// se na tip elementov sklicujemo s tipskim parametrom T:
public class GenericList<T>
{
void Add(T input) { /* ... */ }
}
class TestGenericList
{
private class ExampleClass { }
static void Main()
{
// Deklaracija (in definicija) seznama celih števil tipa int:
GenericList<int> list1 = new GenericList<int>();
// Deklaracija seznama nizov:
GenericList<string> list2 = new GenericList<string>();
// Deklaracija seznama elementov tipa ExampleClass:
GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();
}
}
ZglediUredi
Spodaj je program, ki na konzolo izpiše sporočilo »Pozdravljen, svet!«:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Pozdravljen, svet!");
}
}
Naslednji program isto sporočilo izpiše v novem oknu:
using System.Windows.Forms;
class Program
{
static void Main()
{
MessageBox.Show("Pozdravljen, svet!");
}
}
Glej tudiUredi
|
OpombeUredi
- ↑ Po dogovoru se uporablja kot drugi znak imena jezika znak '#' - znak za število, ASCII vrednost 35 (desetiško oz. 23 šestnajstiško), Unicode U+0023 oziroma HTML #. Gre za drug znak kot tisti, s katerim se označuje višaj v glasbi (npr. nota C♯ oz. Cis) in ima vrednost U+266F oziroma HTML ♯.
- ↑ Microsoftova specifikacija C# 2.0 vsebuje le nove značilnosti raličice 2.0. Starejše značilnosti so vsebovane v specifikaciji 1.2 (zgoraj).
- ↑ 3,0 3,1 3,2 Za C# 3.0, 4.0 in 5.0 ne obstajajo specifikacije ECMA ali ISO/IEC.
SkliciUredi
- ↑ https://devblogs.microsoft.com/dotnet/c-9-0-on-the-record/
- ↑ Rasheed (2006).
- ↑ Uranič (2015).
- ↑ Lokar; Uranič (2009).
- ↑ "C#: Yesterday, Today, and Tomorrow: An Interview with Anders Hejlsberg]" (angleščina).
- ↑ "Generics in C#, Java, and C++" (angleščina).
- ↑ O'Reilly (2006).
- ↑ "State of the Computer Book Market 2008, part 4 — The Languages" (angleščina).
- ↑ 9,0 9,1 "Using C# 3.0 from .NET 2.0" (angleščina). Danielmoth.com. 2007-05-13. Pridobljeno dne 2012-10-04.
- ↑ "Mono and Roslyn". Tirania Blog (angleščina). Miguel de Icaza. Pridobljeno dne 2014-04-09. Delo v teku za C# 5.0.
ViriUredi
- Lokar, Matija; Uranič, Srečo (2009). "Programiranje 1" (PDF). Univerza v Ljubljani. Arhivirano iz prvotnega spletišča (PDF) dne 2016-04-29. Pridobljeno dne 2016-04-29.
- O'Reilly, Tim (2006-08-02). "Programming Language Trends" (angleščina). O'Reilly Radar. Pridobljeno dne 2013-06-14.
- Rasheed, Faraz (2006–12). "C# School" (angleščina). Programmerís Heaven. Arhivirano iz prvotnega spletišča dne 2016-04-30. Pridobljeno dne 2016-04-30.CS1 vzdrževanje: Date format (link)
- Uranič, Srečo (2015-06-05). "C# .NET" (PDF). Arhivirano iz prvotnega spletišča (PDF) dne 2015-06-05. Pridobljeno dne 2015-06-05.