Klasy autonomiczne id 235750 Nieznany

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

1

5. Klasy autonomiczne

Włodzimierz Kasprzak

Włodzimierz Kasprzak

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

2

Tre

ść

1. Istota programowania obiektowego

2. Klasy i obiekty

3. Składowe statyczne

4. Kapsułkowanie

5. Obiekty a zmienne referencyjne

6. Klasa

Object

7. Klasa

String

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

3

1. Istota programowania obiektowego

„Abstrakcyjne typy danych” (klasy) definiowalne przez
programist

ę

i obiekty jako zmienne tych klas.

Mo

ż

liwo

ść

dziedziczenia klas (klasy pochodne) i

Wielopostaciowo

ść

(polimorfizm) operacji,

Ukrywanie szczegółów realizacji, poziomy dost

ę

pu do

składowych klasy (kapsułkowanie, hermetyzacja).

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

4

2. Klasy i obiekty

• Klasa

w j

ę

zyku programowania obiektowego to:

– Element

składni

j

ę

zyka

opatrzony

nazw

ą

,

implementuj

ą

cy abstrakcyjny typ danych – wyznacza

pewn

ą

struktur

ę

(agregacj

ę

) danych i jej mo

ż

liwe

zachowanie (operacje).

– Definicja klasy zawiera definicj

ę

struktury danych (pól,

własno

ś

ci) i definicje funkcji składowych (metod).

• Obiekt

jest instancj

ą

(zmienn

ą

) klasy. W programie mo

ż

e

istnie

ć

wiele obiektów jednej klasy.

• Obiekt

posiada:

– To

ż

samo

ść

(dzi

ę

ki której odró

ż

niamy obiekty od siebie),

– Zachowanie

(operacje

wyznaczone

przez

klas

ę

obiektu),

– Stan

(własne dane o strukturze wyznaczonej przez

definicj

ę

klasy obiektu).

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

5

Klasa a struktura

• struct

jest przepisem dla warto

ś

ci zmiennej:

– Identyfikator równowa

ż

ny warto

ś

ci zmiennej, stan

zmiennej jest bezpo

ś

rednio dost

ę

pny, w strukturach nie

powinno si

ę

definiowa

ć

metod (poza operatorami).

• class

jest przepisem dla obiektu:

– Klasy s

ą

identyfikowalne; stan obiektu nie powinien by

ć

bezpo

ś

rednio dost

ę

pny; nale

ż

y definiowa

ć

metody

klasy.

struct Time

class RachunekBankowy

{

{

public int godzina;

...

public int minuta;

...

}

}

struct Time

class RachunekBankowy

{

{

public int godzina;

...

public int minuta;

...

}

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

6

Definiowanie klas autonomicznych

• Wewn

ą

trz klasy definiuje si

ę

jej składowe, Najwa

ż

niejsze

z nich to pola i metody.

• Metody s

ą

zwykle publiczne, dane – zwykle prywatne

class RachunekBankowy
{

public void Wyplata(decimal kwota)
{ ... }
public void Wplata(decimal kwota)
{ ... }
private decimal saldo;
private string klient;

}

class RachunekBankowy
{

public void Wyplata(decimal kwota)
{ ... }
public void Wplata(decimal kwota)
{ ... }
private decimal saldo;
private string klient;

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

7

„partial class”

• W C# 2.0 klas

ę

, struktur

ę

lub interfejs mo

ż

na definiowa

ć

„na

raty”, w jednym lub w ró

ż

nych plikach

ź

ródłowych. Np.

// w pliku plik1.cs:
namespace PC
{

public partial class CoOrds{

private int x;
private int y;
public CoOrds(int x, int y) {

this.x = x;
this.y = y;
}

}

}

// w pliku plik1.cs:

namespace PC
{

public partial class

CoOrds{

private int x;
private int y;
public CoOrds(int x, int y) {

this.x = x;
this.y = y;
}

}

}

// w pliku plik2.cs:
namespace PC
{

public partial class CoOrds {

public void PrintCoOrds() {

System.Console.WriteLine(

"CoOrds: {0},{1}", x, y);

}

}

}

// w pliku plik2.cs:

namespace PC
{

public partial class

CoOrds {

public void PrintCoOrds() {

System.Console.WriteLine(

"CoOrds: {0},{1}", x, y);

}

}

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

8

Dane (stan) obiektu

• Struktura danych obiektu wyznaczona jest przez klas

ę

obiektu.

• Ale warto

ś

ci danych obiektu s

ą

indywidualne dla ka

ż

dego

obiektu.

Np. obiekt klasy „RachunekBankowy” posiada własne
warto

ś

ci dla pół „saldo” i „klient”. Tylko przez przypadek te

warto

ś

ci mog

ą

by

ć

identyczne dla dwóch obiektów.

Wyplata( )

Wplata( )

saldo 12.56

klient

"Bert"

Wyplata( )

Wplata( )

saldo

12.56

klient

"Fred"

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

9

Metody

Definicja metody



Main

jest metodą. Ta sama składnia stosowana jest dla definicji

innych metod.

using System;

class ExampleClass
{

static void PrzykladowaMetoda( )
{

Console.WriteLine(„To jest metoda");

}
static void Main( )
{

// ...

}

}

using System;

class ExampleClass
{

static void PrzykladowaMetoda( )
{

Console.WriteLine(„To jest metoda");

}
static void Main( )
{

// ...

}

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

10

Wywołanie metody

• Wywoływanie metody w tej samej klasie.

– Poda

ć

nazw

ę

metody z list

ą

argumentów uj

ę

t

ą

w nawiasy.

• Wywołanie metody z innej klasy

– Nale

ż

y wskaza

ć

nazw

ę

klasy do której nale

ż

y

żą

dana metoda

– Wywoływana metoda musi by

ć

dost

ę

pna –

deklarowana ze słowem kluczowym public

• Mo

ż

na zagnie

ż

d

ż

a

ć

wywołania

– Metoda wywołuje inn

ą

metod

ę

, ta z kolei

jeszcze inn

ą

i tak dalej.

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

11

Zwracanie wyniku

• Metoda dla której

typ wyniku

jest inny ni

ż

void

musi

zwróci

ć

wynik.

• W takiej metodzie wyst

ą

pi

ć

musi instrukcja

return

, która

zwraca wynik wywołania. Np.:

• Wywołanie metody:

static int TwoPlusTwo( ) {

int a,b;
a = 2;
b = 2;
return a + b;

}

static int TwoPlusTwo( ) {

int a,b;
a = 2;
b = 2;
return a + b;

}

int x;
x = TwoPlusTwo( );
Console.WriteLine(x);

int x;
x = TwoPlusTwo( );
Console.WriteLine(x);

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

12

Instrukcja

return

• Ko

ń

czy wywołanie metody – zwykle wyst

ę

puje na

ko

ń

cu kodu metody.

• Mo

ż

e

by

ć

instrukcj

ą

wewn

ę

trzn

ą

instrukcji

warunkowej

static void PrzykladReturn( )
{

int numBeans;
//...

Console.WriteLine("Hello");
if (numBeans < 10)

return;

Console.WriteLine("World");

}

static void PrzykladReturn( )
{

int numBeans;
//...

Console.WriteLine("Hello");
if (numBeans < 10)

return;

Console.WriteLine("World");

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

13

U

ż

ycie lokalnych zmiennych

• Lokalne zmienne

– S

ą

tworzone podczas aktywacji i wykonania metody

– S

ą

dost

ę

pne jedynie w tym wywołaniu

– S

ą

usuwane wraz z zako

ń

czeniem wykonania

metody

static void przykladLokalneZmienne(int a)
// Parametr a ma charakter lokalny w tej metodzie
{

int num; // Zmienna lokalna w tej metodzie

...

}

static void przykladLokalneZmienne(int a)
//

Parametr a

ma charakter lokalny w tej metodzie

{

int num; //

Zmienna lokalna

w tej metodzie

...

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

14

Tworzenie obiektu klasy

• Definicja zmiennej dla zadanej klasy nie jest jeszcze

utworzeniem obiektu klasy.

• Do utworzenia obiektu słu

ż

y operator

new

.

class Program
{

static void Main( )
{

Time teraz;
teraz.godzina = 11;
RachunekBankowy moj = new RachunekBankowy( );
moj.Wplata(999999M);

}

}

class Program
{

static void Main( )
{

Time teraz;
teraz.godzina = 11;
RachunekBankowy moj = new RachunekBankowy( );
moj.Wplata(999999M);

}

}

godzina
minuta

teraz

moj

...
...

Nowy obiekt klasy
RachunekBankowy

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

15

Słowo kluczowe

this

• this

jest referencj

ą

do obiektu, na rzecz którego wywołano

metod

ę

• this

jest potrzebne, gdy metoda chce odwoła

ć

si

ę

do

stanu tego obiektu

class RachunekBankowy
{

...
public void UstawNazwe(string nazwa)
{

this.nazwa = nazwa;

}
private string nazwa;

}

class RachunekBankowy
{

...
public void UstawNazwe(string nazwa)
{

this.nazwa = nazwa;

}
private string nazwa;

}

Co by się stało
dla instrukcji
nazwa = nazwa; ?

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

16

Klasy zagnie

ż

d

ż

one

• Mo

ż

na definiowa

ć

klas

ę

zagnie

ż

d

ż

on

ą

w definicji innej

klasy

class Program
{

static void Main( )
{

Bank.Rachunek moj = new Bank.Rachunek( );

}

}
class Bank
{

... class Rachunek { ... }

}

class Program
{

static void Main( )
{

Bank.Rachunek moj = new Bank.Rachunek( );

}

}
class Bank
{

... class Rachunek { ... }

}

Pełna nazwa klasy zagnieżdżonej

zawiera nazwę klasy obejmującej

Pełna nazwa klasy zagnieżdżonej

zawiera nazwę klasy obejmującej

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

17

Dost

ę

p do klasy zagnie

ż

d

ż

onej

• Klasy zagnie

ż

d

ż

one równie

ż

mog

ą

posiada

ć

dost

ę

p

prywatny lub publiczny.

class Bank
{

public class Rachunek { ... } // Klasa zagnieżdżona
private class GeneratorNumeruRachunku { ... } // Klasa

// zagnieżdżona

}
class Program
{

static void Main( ) {

Bank.Rachunek ...

// nazwa jest tu dostępna;

Bank.GeneratorNumeruRachunku ...// nazwa niedostępna!

}

}

class Bank
{

public class Rachunek { ... }

// Klasa zagnieżdżona

private class GeneratorNumeruRachunku { ... }

// Klasa

// zagnieżdżona

}
class Program
{

static void Main( ) {

Bank.Rachunek ...

// nazwa jest tu dostępna;

Bank.GeneratorNumeruRachunku ...

// nazwa niedostępna!

}

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

18

3. Składowe statyczne

• Dane statyczne zawieraj

ą

informacje przeznaczone dla

wszystkich obiektów tej samej klasy

• Np. wszystkie rachunki pewnego typu dziel

ą

informacj

ę

o stopie oprocentowania. Nie jest dobrym rozwi

ą

zaniem,

gdy ka

ż

dy z obiektów zawiera swoj

ą

kopi

ę

pola

„stopaProc”.

Wyplata( )

Wplata( )

saldo 12.56

stopaProc 7%

Wyplata( )

Wplata( )

saldo

99.12

stopaProc 7%









background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

19

Zmienne wspólne obiektów

• Zmienne dzielone pomi

ę

dzy obiektami klasy – wyznaczone

s

ą

przez składowe klasy zwane

polami statycznymi.

class PrzykladLicznika
{

static int nLicznik; // Pole statyczne – unikalne dla klasy
int num;

// Pole zwykłe – jedno w każdym obiekcie

static void InitLicznika() {

nLicznik = 0;

}

...
}
...
PrzykladLicznika A, B;
... // Utworzenie obiektów
PrzykladLicznika.InitLicznika(); // Zeruj nLicznik
A.nLicznik++; // nLicznik wynosi 1
B.nLicznik++; // nLicznik wynosi 2

class PrzykladLicznika
{

static

int nLicznik;

// Pole statyczne – unikalne dla klasy

int num;

// Pole zwykłe – jedno w każdym obiekcie

static void InitLicznika() {

nLicznik = 0;

}

...
}
...
PrzykladLicznika A, B;
...

// Utworzenie obiektów

PrzykladLicznika.InitLicznika();

// Zeruj nLicznik

A.nLicznik++;

// nLicznik wynosi 1

B.nLicznik++;

// nLicznik wynosi 2

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

20

Przesłanianie nazw

• Kompilator nie ostrzega, gdy wyst

ą

pi konflikt nazw

zmiennych lokalnych i statycznych. Np.

class PrzykladPrzeslaniania
{

static int numItems = 0; // Pole statyczne
static void Metoda1()
{

int numItems = 42; // Zmienna lokalna –

// przesłania pole statyczne

...

}
static void Metoda2()
{

numItems = 61; // Odwołanie do pola klasy

}

}

class PrzykladPrzeslaniania
{

static int numItems = 0;

// Pole statyczne

static void Metoda1()
{

int numItems = 42;

// Zmienna lokalna –

// przesłania pole statyczne

...

}
static void Metoda2()
{

numItems = 61;

// Odwołanie do pola klasy

}

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

21

Metody statyczne

• Statyczne metody mog

ą

odwoływa

ć

si

ę

jedynie do

danych statycznych.

• Statyczn

ą

metod

ę

wywołuje si

ę

na rzecz klasy a nie

obiektu.

StopaProcentowa( )

stopaProc 7%

Wyplata( )

Wplata( )

saldo

99.12

klient "Fred"

Obiekt klasy „Rachunek”

Klasa „Rachunek”

Z klasą związane są
dane statyczne i metody statyczne

Poprzez obiekt mamy dostęp do
stanu obiektu i do zwykłych metod













background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

22

Metody statyczne

• Statyczne metody mog

ą

odwoływa

ć

si

ę

jedynie do

danych statycznych

class Time
{

...

public static void Reset(Time t)
{

t.hour =0; // OK
t.minute = 0; // OK
hour = 0; // Błąd kompilacji
minute = 0; // Błąd kompilacji

}
private int hour, minute;

}

class Time
{

...

public static void Reset(Time t)
{

t.hour =0; // OK
t.minute = 0; // OK

hour = 0;

// Błąd kompilacji

minute = 0;

// Błąd kompilacji

}
private int hour, minute;

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

23

4. Kapsułkowanie – poziomy

dost

ę

pu do składowych

• Klasa stanowi odr

ę

bny

zakres definicji nazw

– stanowi

swego rodzaju

kapsuł

ę

:

– Mamy poł

ą

czenie definicji danych i metod w jednej

kapsule (zakresie klasy)

– Istnieje wn

ę

trze

kapsuły (zakresu klasy) i jej

zewn

ę

trze

Wyplata( )

Wplata( )

saldo

Wyplata( )

Wplata( )

saldo

Tak. RachunekBankowy

.

Czy RachunekBankowy ?

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

24

Kapsułkowanie - kontrola dost

ę

pu

• Metody s

ą

zwykle publiczne (public), czyli dost

ę

pne z

zewn

ą

trz kapsuły (zakresu klasy)

• Dane s

ą

zwykle prywatne (private), czyli dost

ę

pne

jedynie z wewn

ą

trz

Wyplata( )

Wplata( )

saldo

Wyplata( )

Wplata( )

saldo





Pole „saldo” nie jest dostępne z zewnątrz

Wszystko jest dostępne z zewnątrz

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

25

Zalety kapsułkowania

• Pozwala na kontrol

ę

dost

ę

pu

Korzystanie z obiektu jest
mo

ż

liwe z zewn

ą

trz poprzez

metody publiczne

• Pozwala na modyfikacje kodu

Sposób korzystania z obiektu
nie ulega zmianie, je

ś

li

modyfikujemy jedynie
prywatne składowe

Wyplata( )

Wplata( )

dollar 12

Wyplata( )

Wplata( )

saldo 12.56

cent 56





background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

26

5. Obiekty a zmienne referencyjne

Typ dla warto

ś

ci

– Jego

zmienna

zawiera warto

ść

danego typu

– Np:

char, int

42

42

int mol;
mol = 42;

int mol;
mol = 42;

string mol;
mol = "Hello";

string mol;
mol = "Hello";

Hello

Hello



Typ referencyjny



Jego zmienna zawiera
odniesienie do warto

ś

ci

(do danej)



Dana jest pami

ę

tana w

oddzielnym miejscu
pami

ę

ci

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

27

Definiowanie i zerowanie zmiennej

referencyjnej

Definicja zmiennej referencyjnej:

Coordinate c1;
c1 = new Coordinate();
c1.x = 6.12;
c1.y = 4.2;

Coordinate c1;
c1 = new Coordinate();
c1.x = 6.12;
c1.y = 4.2;

6.12

6.12

4.2

4.2

c1 = null;

c1 = null;

6.12

6.12

4.2

4.2



Zerowanie zmiennej referencyjnej

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

28

Niezdefiniowane referencje

• Odwołania realizowane poprzez niezainicjalizowane

referencje s

ą

wykrywane podczas kompilacji – kompilator

wygeneruje bł

ą

d.

• Zerowe referencje s

ą

wykrywane podczas wykonania

programu - system wygeneruje wyj

ą

tek.

Coordinate c1;
c1.x = 6.12; // Błąd: niezainicjowana zmienna

Coordinate c1;
c1.x = 6.12;

// Błąd: niezainicjowana zmienna

try { c1.x = 45;
}
catch (NullReferenceException) {

Console.WriteLine”c1 jest zerowy”);

}

try { c1.x = 45;
}
catch (NullReferenceException) {

Console.WriteLine”c1 jest zerowy”);

}

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

29

Operacje porównania warto

ś

ci i

referencji

• Porównywanie zmiennych typów dla warto

ś

ci:

– Operatory == , != porównuj

ą

warto

ś

ci .

• Porównywanie zmiennych referencyjnych (za wyj

ą

tkiem

String):

– Operatory == , != porównuj

ą

referencje a nie warto

ś

ci

– Nie mo

ż

na stosowa

ć

operatorów <, >, <=, >=

1.0

1.0

2.0

2.0

1.0

1.0

2.0

2.0

Różne referencje
mimo tych samych
wartości obiektów

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

30

Wielokrotne referencje do jednego

obiektu

• Dwie zmienne referencyjne mog

ą

referowa

ć

ten sam

obiekt

Coordinate c1= new Coordinate( );
Coordinate c2;
c1.x = 2.3; c1.y = 7.6;
c2 = c1;
Console.WriteLine(c1.x + " , " + c1.y);
Console.WriteLine(c2.x + " , " + c2.y);

Coordinate c1= new Coordinate( );
Coordinate c2;
c1.x = 2.3; c1.y = 7.6;
c2 = c1;
Console.WriteLine(c1.x + " , " + c1.y);
Console.WriteLine(c2.x + " , " + c2.y);

2.3

2.3

7.6

7.6

c1

c2

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

31

6. Klasa

Object

. Typ

object

.

• Typ

object

jest synonimem klasy

System.Object

– jest to

bazowa klasa wszystkich klas j

ę

zyka C# .

• Wszystkie klasy dziedzicz

ą

(jawnie lub niejawnie) klas

ę

Object

.

Exception

Exception

SystemException

SystemException

MojaKlasa

MojaKlasa

Object

Object

String

String

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

32

Wspólne metody wszystkich klas

• Klasa

Object

posiada metody dziedziczone przez

wszystkie klasy w C# :

ToString – konwersja obiektu na String – domy

ś

lna

definicja w klasie Object zwraca nazw

ę

typu dla

obiektu.

Equals – porównuje dwie referencje do obiektów

GetType – podaje informacj

ę

czasu wykonania o typie

Finalize – metoda wołana przed usuni

ę

ciem obiektu

Punkt p = new Punkt();
Console.WriteLine(p.ToString()); // Wyprowadzi napis: „Punkt”

Punkt p = new Punkt();
Console.WriteLine(p.ToString());

// Wyprowadzi napis: „Punkt”

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

33

7. Klasa

String

• Typ

string

-

przeznaczony do reprezentacji sekwencji

znaków (napisów) w

Unikodzie

• Jest to skrótowa nazwa dla klasy

System.String

• Reprezentuje

niemodyfikowalne napisy

• Klasa

StringBuilder

wspomaga operacje na

String-

ach –

reprezentuje

wewn

ę

trznie

modyfikowalne

napisy,

zamieniane na koniec na napisy typu

string

string s = "Hello";
...
s[0] = 'c'; // Błąd kompilacji – próba zmiany napisu

string s = "Hello";
...
s[0] = 'c';

// Błąd kompilacji –

próba zmiany napisu

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

34

Metody klasy

String

• Indeksowanie [ ]

• Insert -

wstawianie

• Własno

ść

Length

• Copy -

kopiowanie

• Concat -

poł

ą

czenie

string s = "Alfabet";
char znak= s[2]; // ‘f’

string s = "Alfabet";
char znak= s[2]; // ‘f’

string s = "On jest wielki";
s = s.Insert(3, "nie ");
Console.WriteLine(s); // „On nie jest wielki”

string s = "On jest wielki";
s = s.Insert(3, "nie ");
Console.WriteLine(s); // „On nie jest wielki”

string msg = "Hello";
int dlug = msg.Length; // 5

string msg = "Hello";
int dlug = msg.Length; // 5

string s1 = "Hello";
string s2 = String.Copy(s1);

string s1 = "Hello";
string s2 = String.Copy(s1);

string s = String.Concat("a", "b", "c");

string s = String.Concat("a", "b", "c");

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

35

Metody klasy

String

• Trim

– usuwa poprzedzaj

ą

ce i ko

ń

cz

ą

ce spacje

• ToUpper

,

ToLower

– zamiana na „du

ż

e” i „małe” litery

string s = " Hello ";
s = s.Trim();
Console.WriteLine(s); // Hello

string s = " Hello ";
s = s.Trim();
Console.WriteLine(s);

// Hello

string sT = "Przedmiot Jimp";
Console.WriteLine(sT.ToUpper( )); // PRZEDMOT JIMP
Console.WriteLine(sT.ToLower( )); // przedmiot jimp

string sT = "Przedmiot Jimp";
Console.WriteLine(sT.ToUpper( ));

// PRZEDMOT JIMP

Console.WriteLine(sT.ToLower( ));

// przedmiot jimp

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

36

Porównania napisów

• Operatory

==

i

!=

mog

ą

by

ć

stosowane dla porównania 2

napisów typu

string

• Metoda

Equals

( 2 wersje – klasowa i zwykła)

• ==

jest równowa

ż

ne

String.Equals

;

!=

jest równowa

ż

ny

!String.Equals

string a = "Test";
string b = "Test";
if (a == b) ... // Wynik porównania: true

string a = "Test";
string b = "Test";
if (a == b) ... // Wynik porównania: true

background image

W.Kasprzak: JiPP 3

5. Klasy autonomiczne

37

Porównania napisów

• Metoda

Compare –

sprawdza kolejno

ść

leksykograficzn

ą

.

Zwraca ujemn

ą

warto

ść

, zero lub dodatni

ą

warto

ść

.

Np.

string s1 = ”Ala”;

string s2 = ”Jola”;

int comp = String.Compare(s1, s2);

// wynik ujemny

• 3-argumentowa wersja

Compare

ignoruj lub nie

rozró

ż

nienie „du

ż

e / małe” litery.

Np.

string s1 = ”Ala”;

string s2 = ”ala”;

int comp =String.Compare(s1,s2, true);

//ignoruj różnicę

„a” „A”


Wyszukiwarka

Podobne podstrony:
klasy tabela id 235766 Nieznany
Galicja doby autonomii id 18576 Nieznany
klasy tabela id 235766 Nieznany
JP SS 3 jezyk C klasy id 228754 Nieznany
Autonomia Galicyjska id 73483 Nieznany (2)
klasy IV VI tematy id 235756 Nieznany
Laboratorium nr 6 klasy id 2617 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany

więcej podobnych podstron