Вы находитесь на странице: 1из 14

Методко аргументтерди берүү

ыкмалары
// Аргументтерди маани боюнча берүү
using System;
class Test {
// Бул метод аргументтерге таасир бербейт
public void Almash(int i, int j) {
i = i + j; //i=35
j = -j; } //j=-20
}

class Misal {
static void Main() {
Test ob = new Test();
int a = 15, b = 20;
Console.WriteLine("а={0} b= {1} ",a, b);

ob. Almash(a, b);

Console.WriteLine("а={0} b= {1} ",a, b);


}
}

а =15 b= 20
а =15 b= 20
// Объектилерди шилтеме боюнча берүү.
using System;
class Test {
public int a, b;
public Test(int i, int j) {
a = i;
b = j;
}
// Бул метод аргументтерге таасир берет
public void Almash(Test ob) {
ob.a = ob.a + ob.b;
ob.b = -ob.b;
}
}
class CallByRef {
static void Main() {
Test ob = new Test(15, 20);
Console.WriteLine("ob.а={0} ob.b={1} ", ob.a, ob.b);

ob. Almash(ob);

Console.WriteLine("ob.а={0} ob.b={1} ", ob.a, ob.b);


}
}

ob.a =15 ob.b =20


ob.a =35 ob.b =-20
// Параметрлерге ref модификаторун колдонуу.

using System;
class Test {
// Бул метод аргументти алмаштырат.
public void Kvadrat (ref int i) {
i = i * i;
}
}
class Misal {
static void Main() {
Test ob = new Test();
int a = 10;
Console.WriteLine("а ={0} “, a);

ob. Kvadrat (ref a);

Console.WriteLine("а ={0} “, a);

}
}

a=10
a=100
// Параметрлерге ref модификаторун колдонуу (бир нече аргумент).
using System;
class Test {
// Бул метод аргументтерди орундары менен алмаштырат.
public void Almash (ref int a, ref int b) {
int t;
t = a;
a = b;
b = t;}
}
class Misal {
static void Main() {
Test ob = new Test();
int x = 10, у = 20;
Console.WriteLine("x={0} у={1} “, х, у);

ob.Almash(ref х, ref у);

Console.WriteLine("x={0} у={1} “, х, у);


}
}
x=10 y=20
x=20 y=10
// Параметрлерге out модификаторун колдонуу.
using System;
class Test {
// Сандын бүтүн жана бөлчөк бөлүгүң табуу.
public int Acirat (double n, out double frac) {
int whole;
whole = (int) n; //10
frac = n - whole; // бөлчөк бөлүгүн frac параметр аркылуу берүү 0,125
return whole; // сандын бүтүн бөлүгүң кайтаруу
}
}
class Misal {
static void Main() {
Test ob = new Test ();
int i;
double f;

i = ob. Acirat(10.125, out f);

Console.WriteLine("Бүтүн бөлүгү= " + i);


Console.WriteLine("Бөлчөк бөлүгү= " + f);
}
}
Бүтүн бөлүгү= 10
Бөлчөк бөлүгү= 0.125
// Бир нече out модификаторлорун колдонуу.
using System;
class Test
{ public void Almash(int x, int y, out int xx, out int yy)
{ if (x > y)
{xx = x + 5;
yy = y - 5;}
else
{ xx = x - 5;
yy = y + 5; }
}}
class Misal
{ static void Main() {
Test ob = new Test();
int x,xx, y, yy;
x=20;
y=30;
xx = 1;
yy = 2;
Console.WriteLine("x={0} y={1} xx={2} yy={3}", x, y, xx, yy);

ob.Almash(x, y, out xx, out yy);

Console.WriteLine("x={0} y={1} xx={2} yy={3}",x,y,xx,yy);


}
}

x=20 y=30 xx=1 yy=2


x=20 y=30 xx=15 yy=35
// ref жана out модификаторлорун объектилерге шилтеме үчүн колдонуу
using System;
class Test { int a, b;

public Test(int i, int j) { a = i; b = j; }

public void Show() { Console.WriteLine("a= {0} b= {1}", a, b); }

// Бул метод аргументтерди алмаштырат.


public void Swap(ref Test ob1, ref Test ob2) { Test t; t = ob1; ob1 = ob2; ob2 = t;}
}

class Misal {
static void Main() {
Test x = new Test(1, 2);
Test у = new Test(3, 4);
Console.Write("Башында x: "); x.Show();
Console.Write("Башында у: "); у.Show();
Console.WriteLine();
// х жана у аргументтери шилтеген объектилерди алмаштыруу.
x.Swap(ref x, ref у);
Console.Write("Алмашкандан кийин х: "); x.Show();
Console.Write("Алмашкандан кийин у: "); у.Show();
}
}
Башында x: a= 1 b= 2
Башында у: a= 3 b= 4

Алмашкандан кийин х: a= 3 b= 4
Алмашкандан кийин у: a= 1 b= 2
// Параметрлердин өзгөрмө санын колдонуу (params модификатору)
using System;
class Test { public int MinVal(params int[] nums) {
int m;
if(nums.Length == 0) { Console.WriteLine("Ката, аргументтер жок.");
return 0; }

m = nums[0];
for(int i=1; i < nums.Length; i++) if(nums[i] < m) m = nums[i];
return m; }
}
class Misal {
static void Main() {
Test ob = new Test ();
int min;
int a = 10, b = 20;

min = ob.MinVal(a, b); // Методду эки маани менен чакыруу.


Console.WriteLine("Эң кичинеси = " + min);

min = ob.MinVal(a, b, -1); // Методду үч маани менен чакыруу


Console.WriteLine("Эң кичинеси = " + min);

min = ob.MinVal(18, 23, 3, 14, 25); // Методду беш маани менен чакыруу
Console.WriteLine("Эң кичинеси = " + min);

int[] args = { 45, 67, 34, 9, 112, 8 }; // Методду массивдин маанилери менен чакыруу
min = ob.MinVal(args);
Console.WriteLine("Эң кичинеси = " + min);
// min = ob.MinVal(l, 2.2); // Ката!
}}

Эң кичинеси = 10
Эң кичинеси = -1
Эң кичинеси = 3
Эң кичинеси = 8
// Кадымки жана өзгөрмө сандагы парметрлерди колдонуу (params модификатору)
using System;
class Test {
public void ShowArgs(string msg, params int[] nums) {
Console.Write(msg + ");
foreach(int i in nums)
Console.Write(i + " ");
Console.WriteLine();
}
}

class Misal{
static void Main() {
Test ob = new Test();

ob.ShowArgs("Бул бүтүн сандар ",1, 2, 3, 4, 5);

ob.ShowArgs("Дагы эки бүтүн сан ",17, 20);


}
}

Бул бүтүн сандар 1, 2, 3, 4, 5


Дагы эки бүтүн сан 17, 20
// Методдон объектилерди кайтаруу
using System;
class Test {
int width;
int height;

public Test(int w, int h) { width = w; height = h; }


public int Area() { return width * height; }
public void Show() { Console.WriteLine(width + " " + height); }

//Жактарын берилген коэфф. чоңойтуу


public Test Metod_1(int factor)
{ return new Test(width * factor, height * factor);}
}
class Misal { static void Main() {
Test r1 = new Test(4, 5);
Test r2 = new Test(0, 0);
Console.Write("r1 төрт бурчтугу: "); r1.Show();
Console.WriteLine("r1 аянты: " + r1.Area());

Console.WriteLine();
//rlден эки эсе чоң төрт бурчтукту түзүү.
r2 = r1. Metod_1(2);
Console.Write("r2 төрт бурчтугу: "); r2.Show();
Console.WriteLine("r2 аянты: " + r2.Area());
}
}
r1 төрт бурчтугу: 4 5
r1 аянты: 20
r2 төрт бурчтугу: 8 10
r2 аянты: 80
// Өзүнүн классындагы объектилерди курууга арналган ыкма (класстын фабрикасы).
using System;
class Test
{ int a, b; // класстын жабык мүчөлөрү
// Test классы үчүн фабриканы куруу.

public Test Fabrica(int i, int j)


{ Test t = new Test();
t.a = i;
t.b = j;
return t; // объектини кайтаруу
}

public void Show() { Console.WriteLine("а жана b: " + a + " " + b); }


}

class Misal
{ static void Main()
{ Test ob = new Test();
int i, j;
// Класстын фабрикасын колдонуп объектилерди куруу.
for (i = 0, j = 5; i < 4; i++, j--)
{
Test anotherOb = ob.Fabrica(i, j); // Объектини түзүү.
anotherOb.Show(); }
}}

а жана b: 0 5
а жана b: 1 4
а жана b: 2 3
а жана b: 3 2
// Методдон массивди кайтаруу.
using System;
class Test {
// Метод facts массивин кайтарат, ал num аргументинин көбөйтүүчүлөрүн камтыйт.

public int[] FindFactors(int num, out int numfactors) {


int[] facts = new int[80]; // 80, мисалы
int i, j;
// көбөйтүүчүлөрүн табып, facts массивине жайгаштыруу.
for(i=2, j=0; i < num/2 + 1; i++)
if( (num%i)==0 ) { facts[j] = i; j++; }
numfactors = j;
return facts;
}
}

class Misal {static void Main() {


Test ob = new Test();
int numfastors;
int[] factors;
factors = ob.FindFactors(100, out numfastors);
Console.Write("100 санынын көбөйтүүчүлөрү: ");
for (int i = 0; i < numfastors; i++)
Console.Write(factors[i] + " "); }
}

100 санынын көбөйтүүчүлөрү: 2 4 5 10 20 25 50


//home work public void Kvadrat ( out ref int i) {…}
public void Kvadrat ( int i) {…} ob. Kvadrat ( out ref a);
ob. Kvadrat ( ref a);
public void Kvadrat ( out ref int i) {…}
public void Kvadrat ( ref int i) {…} ob. Kvadrat (ref out a);
ob. Kvadrat ( a);
public void Kvadrat ( ref out int i) {…}
public void Kvadrat ( out int i) {…} ob. Kvadrat ( out ref a);
ob. Kvadrat ( ref a);

public void Kvadrat ( ref int i) {…}


ob. Kvadrat ( out a);

public void Kvadrat ( out int i) {…}


ob. Kvadrat ( a);

public void Kvadrat ( int i) {…}


ob. Kvadrat ( out ref a);

public void Kvadrat ( ref out int i) {…}


ob. Kvadrat (ref out a);

Вам также может понравиться