Ключови думи в C#

By | вторник юни 16th, 2015

csharp

Ключови думи

Ключовите думи са предефинирани запазени идентификатори, които имат специално значение за компилатора. Езикът има два типа ключови думи — контекстуални и запазени. Запазените ключови думи като false или byte може да се ползват само като ключови думи.

abstract Използването на абстрактния модификатор в декларацията на класа, за да покаже, че един клас е предназначена само да бъде базов клас на други класове. Членове маркирани като абстрактни, или включени в абстрактен клас, трябва да бъдат изпълнени от класове, които произтичат от абстрактен клас.Абстрактните класове са класове, които служат само като шаблони и няма да може да се инициализира обект от този тип. В противен случай са точно като обикновен клас.

Може да има също абстрактни компоненти. Абстрактните компоненти са компоненти на абстрактни класове, които нямат никаква имплементация. Те трябва да бъдат пренаписани от класа, който наследява компонента.

abstract class Mammal

{

public abstract void Walk();

}

class Human : Mammal

{

public override void Walk()

{

}

}

as Операторът as ще се опита да направи мълчаливо кастване към даден вид. Ако преобразуването е успешно, операторът ще върне обекта като нов тип, ако не е успешно, ще върне нулева референция. Stream stream = File.Open(@“C:\Temp\data.dat“);

FileStream fstream = stream as FileStream; // ще върне обект

String str = stream as String; // ще е неуспешно и ще върне null.

base base ключова дума се използва за достъп членове на базовия клас от вътрешността извлечен клас:
bool Ключовата дума bool е псевдоним на System.Boolean. Той се използва за деклариране променливи за съхраняване на булеви стойности, true и false.
break break инструкцията прекратява най-близко обхващащия цикъл или switch конструкция. Управлението се предава на конструцията, която следва след приключената, ако има такива. for (int i = 1; i <= 100; i++)

{

if (i == 5)

{

break;

}

    // Ще се прекъсне в тази точка

Console.WriteLine(i);

}

byte byte ключовата дума обозначава неделима тип, който съхранява стойности, както е посочено. => byte myByte = 255;
case Това е специфична ключова дума към switch  оператора. Погледни switch.
catch Ако няма catch блок, който да съответства на типа на хвърленото изключение, изпълнението на външния блок (или метод), съдържащ try…catch конструкцията е прекъсва и изключението се предава извън съдържащия блок или метод. Може да има много catch блокове, като в този случай се изпълнява първия блок с дефинирана променлива за изключение, чиито тип съвпада с типа на хвърленото изключение. Изключението се препредава, докато не намери съвпадение в някой от текущо активните методи. Ако изключението достигне главния метод – Main() без съвпадение, тогава цялата програма се прекратява и текстово описание на изключението се изписва на стандартния изходен поток. catch (InvalidCastException e)

{

}

char Ключовата дума char се използва за деклариране на копие на структурата System.Char, за да представляват символ Unicode. Стойността на един Char обект, е 16-битов цифров  стойност.
Тип Диапазон Размер
char U+0000 to U+FFFF 16-bit char
checked checked ключова дума се използва за изрично да активирате препълване проверка за неразделна тип аритметични действия и реализации.
По подразбиране, израз, който се съдържат само константни стойности предизвика грешка при компилатора, ако изразът води стойност, която е извън диапазона на типа на дестинация. Ако изразът съдържа една или повече не-постоянни стойности, компилаторът не може да открие преливника.
class Класовете се декларират като се използва ключова дума class class TestClass

{

Тяло на класа

}

const Когато декларираме локална променлива или поле с префикс ключовата дума const, нейната стойност трябва да се даде при декларирането. След това стойността е заключена и не може да бъде променяна. Те трябва да бъдат декларирани в контекста като поле или локална променлива. Константите са имплицитно статични. const int x = 0;

const double PI = 3.14;

const string productName = „Visual C#“;

continue continue предава управлението на следващата итерация на обхващащите while, do, for, or foreach. for (int i = 1; i <= 10; i++)

{

if (i < 9)

{

continue; // прескача останалия код от for цикъла
}

Console.WriteLine(i);

}

/*

Output:

9

10

*/

delegate C# предоставя типово-безопасни, обектно-ориентирани указатели към функции под формата на делегати. Инициализиране на делегат като анонимен метод.
addition = delegate(int a, int b){ return a + b; };
enum Изброените типове (enums) са наименовани константи, представящи цели числа.
Променливите от изброен тип имат стойност по подразбиране нула. Те могат да бъдат декларирани или инициализирани към наименована константа, определена от изброения тип.
enum Season

{

Winter = 0,

Spring = 1,

Summer = 2,

Autumn = 3,

Fall = Autumn

}

Season season;

season = Season.Spring;

event Събитията са указатели, които могат да сочат към многобройни методи. По-точно те обединяват тези указатели към един идентификатор. Това може да се разглежда като разширение на делегатите. Събитията в C# са специални инстанции на делегати, декларирани с ключовата дума event. Те обикновено се използват като тригери в UI разработването. delegate void MouseEventHandler(object sender, MouseEventArgs e);

public class Button : System.Windows.Controls.Control

{

event MouseEventHandler OnClick;

/* Imaginary trigger function */

void click()

{

this.OnClick(this, new MouseEventArgs(data));

}

}

extern Опция на C #, е способността да се извиква собствен код. Сигнатурата на метода е проста, методът се декларира без тяло и е дефиниран с extern. Атрибутът DllImport също трябва да се добави към указателя на дадения DLL файл [DllImport(„win32.dll“)]

static extern double Pow(double a, double b);

finally Кодът в finally блока се изплънява винаги, независимо дали е прихванато изключение.
for for цикъл се състои от три части: деклариране, условие и обновяване на променлива. Всяка от тях може да не бъде взета предвид, тъй като не са задължителни. for (int i = 0; i < 10; i++)

{

}

foreach foreach цикъл произлиза от for цикъл и следва определен модел, описан в спецификацията на езика С# за обхождане на всички елементи. foreach (int i in intList)

{

}

goto Етикетите са определени точки в кода, към които може да се промени хода на изпълнение напрограмата с помощта на goto инструкция.

––

goto инструкцията може да се използва в switch конструкция за прехвърляне контрола от един към друг case етикет.

start:

goto start;

switch(n)

{

case 1:

Console.WriteLine(„Case 1“);

break;

case 2:

Console.WriteLine(„Case 2“);

goto case 1;

case 3:

Console.WriteLine(„Case 3“);

case 4:

Console.WriteLine(„Case 4“);

goto default;

default:

Console.WriteLine(„Default“);

}

if if конструкция се изпълнява, когато зададеното условие е вярно, т.е. има стойност true. Ако в тялото на условната конструкция има само един оператор, не се изискват блок скоби, въпреки че е препоръчително да се слагат блок скоби. if (i == 3)

{

}

else if (i == 2)

{

}

else

{

}

implicit Операторът за имплицитно преобразуване (implicit typecasting) ще преобразува един тип в друг автоматично, без изрично да се използва какъвто и да е оператор. Употребата на имплицитни оператори е позволени, когато няма възможност от загуба на данни. Такова конвертиране е от тип с по-малък обхват към тип с по-голям обхват (int към long) или когато имаме няколко типа данни с различен обхват. int myInt = 5;

Console.WriteLine(myInt); // 5

long myLong = myInt;

Console.WriteLine(myLong); // 5

Console.WriteLine(myLong + myInt); // 10

in Използва се в foreach цикъла за да присвой от обекта дадената  стойността в променливата foreach (int i in intList)

{

}

interface Интерфейсите са структури от данни, които съдържат дефиниции на роли, които не се имплементират действително. Те са полезни, когато трябва да се определи договор между компоненти с различни типове, които имат различни имплементации. Може да се декларират дефиниции за методи, свойства и индексатори. Интерфейсните компоненти са publuc. Интерфейсът може да бъде имплементиран неявно или явно. interface IBinaryOperation

{

double A { get; set; }

double B { get; set; }

double GetResult();

}

namespace Именните пространства са част от типа name и се използват за групиране и / или разграничаване на посочените структури от други такива. Ключовата дума namespace се използва за деклариране на обхват, който съдържа множество от свързани обекти. Namespaces може да се използват за организиране на елементите на кода и да се създадат глобално уникални типове. Namespaces имплицитно са с public достъп и това не може да се променя. System.IO.DirectoryInfo // DirectoryInfo е в именното пространство System.IO
override
private
protected
public Прави полето публично, прави свойството публично, както и прави метода за достъп публичен. public double Width

{

get;

private set;

}

readonly Ключовата дума readonly прави подобно нещо за полетата. Подобно на полетата, маркирани с const, те не могат да се променят веднъж щом им се зададе начална стойност. Разликата е, че може по избор да им се зададе начална стойност в конструктора. Това важи само за полета. Полета, които са само за четене, могат да бъдат, както членове на една инстанция или статични членове на класа.
ref/out Аргументи могат да се предават по референция, когато при извикване на метод към описанието на параметър в дефиницията на метода се добави ключова дума ref или out. Удобно е да се използват, когато се налага в даден метод стойността на променлива да се променя по референция, т.е. тази промяна директно се отразява на променливата. Разликата между тези два параметъра е, че преди инициализацията при out достъпът е само за писане, докато при ref достъпът е за четене и писане. void PassRef(ref int x)

{

if(x == 2) x = 10;

}

int Z;

PassRef(ref Z);

void PassOut(out int x)

{

x = 2;

}

int Q;

PassOut(out Q);

return Връща стойност и прекъсва по-нататъшно изпълнение
sealed
sizeof
static Прави полето статична компонента, както и прави свойството статичен компонент. static void Main(string[] args)

{

}

struct Структурите са по-известни като structs. Структурите са дефинирани от потребителя стойностни типове, които се декларират със запазената дума struct. Те са много подобни на класовете, но са по-ограничени. Някои важни синтактични разлики между клас и структура.

При използването на структури се изскват само структури без елементи от референтен тип като символен низ или друг клас.

struct Foo

{

}

public struct MyStruct

{

public char Character;

public int Integer;

}

public struct MyContainerStruct

{

public byte Byte;

public MyStruct MyStruct;

}
MyContainerStruct x;

MyContainerStruct* ptr = &x;

byte value = ptr->Byte;

switch Switch конструкция служи като филтър за различни стойности. Всяка стойност довежда до „случай“ – case етикет. Не е позволено отпадане на случаи и затова обикновено се използва ключовата дума break за край в case етикет. Неусловно return в case блок също може да се използва за край. Може да се разгледа как goto инструкция може да се използва, за преминаване от един case етикет към друг. Много сase етикети може да доведат до еднакав код обаче. Саse етикетът – по подразбиране изпълнява всички други случаи, които не се обработват от конструкцията. int caseSwitch = 1;

switch (caseSwitch)

{

case 1:

Console.WriteLine(„Case 1“);

break;

case 2:

Console.WriteLine(„Case 2“);

break;

default:

Console.WriteLine(„Default case“);

break;

}

throw Хвърляне на изключение throw new NotImplementedException();
try Кодът в try блокa се изпълнява и ако се появи изключение, изпълнението на блока се прекъсва и изключението се прихваща в catch блокa. Може да има много catch блокове, като в този случай се изпълнява първия блок с дефинирана променлива за изключение, чиито тип съвпада с типа на хвърленото изключение. object obj = null;

try

{

int number = (int)obj; // Error

}

using Using декларацията зарежда конкретeн namespace от референтни събрания/assembly/. Декларацията обикновено се поставя в горната част (или заглавието) на кода, но може да бъде поставена на друго място, по желание, например вътре в класовете. using System;

using System.Collections;
using Net = System.Net;

using DirInfo = System.IO.DirectoryInfo;

virtual Методи, които са дефинирани с virtual се изпълняват, но те могат да бъдат пренаписани от наследниците с ключовата дума override.

Имплементацията се определя по действителния тип на обекта, а не по типа на променливата.

class Operation

{

public virtual int Do()

{

return 0;

}

}

class NewOperation : Operation

{

public override int Do()

{

return 1;

}

}

while Цикъл конструкциите са конструкции, които са многократно изпълнявани, докато е в сила дадено условие. while (i == true)

{

}

Обикновено, като се добавят нови ключови думи към езика С #, те се добавят като контекстуални ключови думи, за да се избегне счупване на програми, написани в по-ранни версии. Контекстуалните ключови думи имат специфично значение, само в ограничен програмен контекст, и могат да бъдат използвани като идентификатори извън този контекст. Някои контекстуални думи, като partial или where, имат специално значение в два или повече контекста.

 

Comments

comments

Вашият коментар