{
static void Main(string[] args)
{
Turk T1 = new Turk();
T1.Dil = "türkçe ";
T1.Konus();
}
}
abstract class Insan
{
public abstract string Dil { get; set; }
public abstract void Konus();
}
class Turk : Insan
{
public string _dil;
public override string Dil
{
get
{
return _dil;
}
set
{
_dil = value;
}
}
public override void Konus()
{
Console.WriteLine("{0} dilini konuşuyor", Dil);
}
}
}
burdaki set in işlevi nedir ? Dil in değerini _dil'e mi aktarıyor ?
","headline":"C# get ve set nedir","mainEntity":{"@type":"Question","name":"C# get ve set nedir","url":"https://uzmanim.net/soru/c-get-ve-set-nedir/86446","author":{"@type":"Person","name":"ahmet5847"},"comment":{"@type":"Comment","name":"@alattin ","author":{"@type":"Person","name":"toprak34"},"text":"@alattin "},"commentCount":1,"dateCreated":"2018-03-11T18:40:12.36+03:00","dateModified":"2018-03-15T10:06:37.79+03:00","datePublished":"2018-03-11T18:40:12.36+03:00","keywords":"c#","publisher":{"@type":"Organization","name":"uzmanim.net","url":"https://uzmanim.net"},"text":"class Program
{
static void Main(string[] args)
{
Turk T1 = new Turk();
T1.Dil = "türkçe ";
T1.Konus();
}
}
abstract class Insan
{
public abstract string Dil { get; set; }
public abstract void Konus();
}
class Turk : Insan
{
public string _dil;
public override string Dil
{
get
{
return _dil;
}
set
{
_dil = value;
}
}
public override void Konus()
{
Console.WriteLine("{0} dilini konuşuyor", Dil);
}
}
}
burdaki set in işlevi nedir ? Dil in değerini _dil'e mi aktarıyor ?
","answerCount":2,"suggestedAnswer":[{"@type":"Answer","name":"Dil, bir property.. Bu ne demek anlatmaya çalışayım. Örneğin bir class yani sınıfımız var. Bu sınıfın içinde bazı veriler saklamak ve daha sonra kullanmak istiyoruz. İşte property dediğim şey bu işe yarar. Property int, string, bool ve daha pek çok veri türünü saklar.
Bir class içinde değişken tanımladığında ve buna dışardan değer atamak istediğinde property kullanırsın. Bir property içinde get ve set gibi ifadeler olur.
property'e değer atamak istediğinde set, içindeki değeri okumak istediğinde get çalışır.
Koduna dönersek;
Turk T1 = new Turk();\nT1.Dil = \"türkçe \";
burada senin oluşturduğun Turk sınıfından bir örnek türetiliyor ve Dil özelliğine "türkçe" değerini atıyorsun. Bu esnada set bölümünü çalışıyor.
Eğer get bölümünü çalıştırmak ve ekrana yazdırmak isteseydin
Console.Write(T1.Dil);
yeterli olacaktı ki burada property'nin get bölümünü çalışacaktı.
abstract tamamen farklı. abstract ifadesi temel bir sınıf tanımlamak için kullanılır. Bu şu anlama gelir bir class, abstract ifadesi kullanıyorsa doğrudan kullanılmaz, başka sınıfların bunu miras alması gerekir. Bir nevi şablon gibi düşün. abstract sınıftan bir kopta oluşturamazsın. Aslında _dil değişkeni public değil private olsa daha anlamlı olurdu. Neden?
private string _dil;
Senin örneğindeki kod C# ve farklı dillerde kullanılan bir tekniği içeriyor. Şimdi eğer _dil private olsaydı, buna dışardan erişmek mümkün olmayacaktı. Yani sen şu şekilde _dil'e erişemeyecek, değerini değitiremeyecektin:
Turk T1 = new Turk();\nT1._dil = \"Fransızca\";
Ama uygulaman gereği sen bunun değerini değiştirmek, bazen de atanan değer üzerinde işlem yapmak isteyebilirsin. O zaman ne yapacaksın?
İşte bu durumda public property tanımlıyorsun. Bu public property, private olan değişkenin değerini değiştiriyor ve okuyabiliyor. Bir nevi aracı gibi.
Bildiğin üzere private, sadece bulunduğu kapsamsan erişilebilir, metodun içindeyse sadece metodun içinden, class'ın içindeyse sadece class'ın içinden gibi. Fakat public öyle değildir, herkese açıktır. Anlaşılabilir olsun diye basitçe anlatmaya çalışıyorum.
private string _dil;\npublic string Dil\n{\n get\n {\n return _dil;\n }\n set\n {\n _dil = value;\n \n }\n}
Yukarıdaki kodu C#'da şu şekilde de yazabilirsin:
public string Dil{get;set;};
Buna da otomatik property deniyor. Senin için hem private alanı(_dil) hem de public özelliği otomatik tanımlar (Dil)
class Program\n {\n static void Main(string[] args)\n {\n // Turk sınıfından yeni bir örnek türetiyorsun.\n Turk T1 = new Turk();\n // T1 adındaki nesnenin Dil özelliğine erişiyor ve değer atıyorsun.\n // Doğal olarak aslında _dil değişkeninin değerini değiştiriyorsun\n T1.Dil = \"türkçe \";\n // T1 içindeki Konus() metodunu çağırıyorsun.\n T1.Konus();\n }\n }\n\n abstract class Insan\n {\n public abstract string Dil { get; set; }\n\n public abstract void Konus();\n }\n\n class Turk : Insan\n {\n // public string _dil; bu satır private olursa daha mantıklı olur\n private string _dil;\n\n //private olan _dil'e dışardan nasıl erişeceksin? cevabı Dil property'sinde\n // Dil sana dışardan private olan _dil değişkenine erişmeni sağlar.\n // Dışardan erişmekten kasıt, kapsam dışı. Örneğin static void Main bölümüden erişim dışardan erişim olarak adlandırılır.\n public override string Dil\n {\n get\n {\n return _dil; //private olan _dil değişkeninin değerini döndür\n }\n\n set\n {\n _dil = value; // private _dil değişkenine değer atama;\n\n }\n }\n\n public override void Konus()\n {\n Console.WriteLine(\"{0} dilini konuşuyor\", Dil);\n Console.ReadLine(); // pencereyi kapatmadan beklemek için\n }\n }
","url":"https://uzmanim.net/soru/c-get-ve-set-nedir/86446#a86448","author":{"@type":"Person","name":"alattin"},"comment":[{"@type":"Comment","name":"@alattin yani benim düşündüğüm gibi property değerini get kodu ile _dil e mi aktarıyoruz ayrıca c# neden get ve seti _dil yerine Dil yaptığımda hata verdiğinide anlamadım abstract yüzünden mi ?","author":{"@type":"Person","name":"ahmet5847"},"text":"@alattin yani benim düşündüğüm gibi property değerini get kodu ile _dil e mi aktarıyoruz ayrıca c# neden get ve seti _dil yerine Dil yaptığımda hata verdiğinide anlamadım abstract yüzünden mi ?"},{"@type":"Comment","name":"@ahmet5847 yoruma yazamak yerine cevabımı düzenledim.","author":{"@type":"Person","name":"alattin"},"text":"@ahmet5847 yoruma yazamak yerine cevabımı düzenledim."},{"@type":"Comment","name":"@alattin her şeyi çok güzel anlatmışsınız fakat ","author":{"@type":"Person","name":"ahmet5847"},"text":"@alattin her şeyi çok güzel anlatmışsınız fakat "},{"@type":"Comment","name":"1 . set property değer atamaksa yazdığımız kod yani _dil = value _dil in değerini al demek mi yoksa _dil e ata demek mi ?","author":{"@type":"Person","name":"ahmet5847"},"text":"1 . set property değer atamaksa yazdığımız kod yani _dil = value _dil in değerini al demek mi yoksa _dil e ata demek mi ?"},{"@type":"Comment","name":"attığın kod bloğını çalıştırdığımda process is terminated due to stackoverflowexception hatası alıyorum nedenini anlamadım","author":{"@type":"Person","name":"ahmet5847"},"text":"attığın kod bloğını çalıştırdığımda process is terminated due to stackoverflowexception hatası alıyorum nedenini anlamadım"},{"@type":"Comment","name":"_dil=value demek property'e atanan değeri al _dil değişkenine ata demek. Hangi kod blogu çalışmıyor anlamadım @ahmet5847 ","author":{"@type":"Person","name":"alattin"},"text":"_dil=value demek property'e atanan değeri al _dil değişkenine ata demek. Hangi kod blogu çalışmıyor anlamadım @ahmet5847 "},{"@type":"Comment","name":"cevap olarak attığım kod bloğu çalışmıyor abi senide uğraştırdım ama :D @alattin bizde öğrenmeye çalışıyoruz ","author":{"@type":"Person","name":"ahmet5847"},"text":"cevap olarak attığım kod bloğu çalışmıyor abi senide uğraştırdım ama :D @alattin bizde öğrenmeye çalışıyoruz "},{"@type":"Comment","name":"Kodda hata alman normal. Çünkü public override string Dil { get { return Dil; } set { Dil = value; } } ile property içinde kendine değer atamaya ve değer okumaya çalışıyorsun. Bu property private _dil değişkenine erişim için kullanılmalı @ahmet5847 ","author":{"@type":"Person","name":"alattin"},"text":"Kodda hata alman normal. Çünkü public override string Dil { get { return Dil; } set { Dil = value; } } ile property içinde kendine değer atamaya ve değer okumaya çalışıyorsun. Bu property private _dil değişkenine erişim için kullanılmalı @ahmet5847 "},{"@type":"Comment","name":"@ahmet5847 çalışan kodu açıklamaları ile birlikte cevabıma ekledim.","author":{"@type":"Person","name":"alattin"},"text":"@ahmet5847 çalışan kodu açıklamaları ile birlikte cevabıma ekledim."},{"@type":"Comment","name":"Allah razı olsun sitenin sahibiydin galiba abi sen bilirsin ama konuyu benim gibi acemiler için sabitleyebilirsin :D @alattin ","author":{"@type":"Person","name":"ahmet5847"},"text":"Allah razı olsun sitenin sahibiydin galiba abi sen bilirsin ama konuyu benim gibi acemiler için sabitleyebilirsin :D @alattin "},{"@type":"Comment","name":"Allah senden de razı olsun @ahmet5847 bu tür sorular yeni öğrenenler için çok faydalı","author":{"@type":"Person","name":"alattin"},"text":"Allah senden de razı olsun @ahmet5847 bu tür sorular yeni öğrenenler için çok faydalı"}],"commentCount":11,"dateCreated":"2018-03-11T20:57:50.243+03:00","dateModified":"2018-03-15T10:06:37.743+03:00","text":"
Dil, bir property.. Bu ne demek anlatmaya çalışayım. Örneğin bir class yani sınıfımız var. Bu sınıfın içinde bazı veriler saklamak ve daha sonra kullanmak istiyoruz. İşte property dediğim şey bu işe yarar. Property int, string, bool ve daha pek çok veri türünü saklar.
Bir class içinde değişken tanımladığında ve buna dışardan değer atamak istediğinde property kullanırsın. Bir property içinde get ve set gibi ifadeler olur.
property'e değer atamak istediğinde set, içindeki değeri okumak istediğinde get çalışır.
Koduna dönersek;
Turk T1 = new Turk();\nT1.Dil = \"türkçe \";
burada senin oluşturduğun Turk sınıfından bir örnek türetiliyor ve Dil özelliğine "türkçe" değerini atıyorsun. Bu esnada set bölümünü çalışıyor.
Eğer get bölümünü çalıştırmak ve ekrana yazdırmak isteseydin
Console.Write(T1.Dil);
yeterli olacaktı ki burada property'nin get bölümünü çalışacaktı.
abstract tamamen farklı. abstract ifadesi temel bir sınıf tanımlamak için kullanılır. Bu şu anlama gelir bir class, abstract ifadesi kullanıyorsa doğrudan kullanılmaz, başka sınıfların bunu miras alması gerekir. Bir nevi şablon gibi düşün. abstract sınıftan bir kopta oluşturamazsın. Aslında _dil değişkeni public değil private olsa daha anlamlı olurdu. Neden?
private string _dil;
Senin örneğindeki kod C# ve farklı dillerde kullanılan bir tekniği içeriyor. Şimdi eğer _dil private olsaydı, buna dışardan erişmek mümkün olmayacaktı. Yani sen şu şekilde _dil'e erişemeyecek, değerini değitiremeyecektin:
Turk T1 = new Turk();\nT1._dil = \"Fransızca\";
Ama uygulaman gereği sen bunun değerini değiştirmek, bazen de atanan değer üzerinde işlem yapmak isteyebilirsin. O zaman ne yapacaksın?
İşte bu durumda public property tanımlıyorsun. Bu public property, private olan değişkenin değerini değiştiriyor ve okuyabiliyor. Bir nevi aracı gibi.
Bildiğin üzere private, sadece bulunduğu kapsamsan erişilebilir, metodun içindeyse sadece metodun içinden, class'ın içindeyse sadece class'ın içinden gibi. Fakat public öyle değildir, herkese açıktır. Anlaşılabilir olsun diye basitçe anlatmaya çalışıyorum.
private string _dil;\npublic string Dil\n{\n get\n {\n return _dil;\n }\n set\n {\n _dil = value;\n \n }\n}
Yukarıdaki kodu C#'da şu şekilde de yazabilirsin:
public string Dil{get;set;};
Buna da otomatik property deniyor. Senin için hem private alanı(_dil) hem de public özelliği otomatik tanımlar (Dil)
class Program\n {\n static void Main(string[] args)\n {\n // Turk sınıfından yeni bir örnek türetiyorsun.\n Turk T1 = new Turk();\n // T1 adındaki nesnenin Dil özelliğine erişiyor ve değer atıyorsun.\n // Doğal olarak aslında _dil değişkeninin değerini değiştiriyorsun\n T1.Dil = \"türkçe \";\n // T1 içindeki Konus() metodunu çağırıyorsun.\n T1.Konus();\n }\n }\n\n abstract class Insan\n {\n public abstract string Dil { get; set; }\n\n public abstract void Konus();\n }\n\n class Turk : Insan\n {\n // public string _dil; bu satır private olursa daha mantıklı olur\n private string _dil;\n\n //private olan _dil'e dışardan nasıl erişeceksin? cevabı Dil property'sinde\n // Dil sana dışardan private olan _dil değişkenine erişmeni sağlar.\n // Dışardan erişmekten kasıt, kapsam dışı. Örneğin static void Main bölümüden erişim dışardan erişim olarak adlandırılır.\n public override string Dil\n {\n get\n {\n return _dil; //private olan _dil değişkeninin değerini döndür\n }\n\n set\n {\n _dil = value; // private _dil değişkenine değer atama;\n\n }\n }\n\n public override void Konus()\n {\n Console.WriteLine(\"{0} dilini konuşuyor\", Dil);\n Console.ReadLine(); // pencereyi kapatmadan beklemek için\n }\n }
","upvoteCount":0},{"@type":"Answer","name":"
namespace Uygulama
{
class Program
{
static void Main(string[] args)
{
Turk T1 = new Turk();
T1.Dil = "türkçe ";
T1.Konus();
}
}
abstract class Insan
{
public abstract string Dil { get; set; }
public abstract void Konus();
}
class Turk : Insan
{
public override string Dil { get { return Dil; } set { Dil = value; } }
public override void Konus()
{
Console.WriteLine("{0} dilini konuşuyor", Dil);
}
}
}
namespace Uygulama
{
class Program
{
static void Main(string[] args)
{
Turk T1 = new Turk();
T1.Dil = "türkçe ";
T1.Konus();
}
}
abstract class Insan
{
public abstract string Dil { get; set; }
public abstract void Konus();
}
class Turk : Insan
{
public override string Dil { get { return Dil; } set { Dil = value; } }
public override void Konus()
{
Console.WriteLine("{0} dilini konuşuyor", Dil);
}
}
}
class Program
{
static void Main(string[] args)
{
Turk T1 = new Turk();
T1.Dil = "türkçe ";
T1.Konus();
}
}
abstract class Insan
{
public abstract string Dil { get; set; }
public abstract void Konus();
}
class Turk : Insan
{
public string _dil;
public override string Dil
{
get
{
return _dil;
}
set
{
_dil = value;
}
}
public override void Konus()
{
Console.WriteLine("{0} dilini konuşuyor", Dil);
}
}
}
burdaki set in işlevi nedir ? Dil in değerini _dil'e mi aktarıyor ?
Toplam 2 cevap
Dil, bir property.. Bu ne demek anlatmaya çalışayım. Örneğin bir class yani sınıfımız var. Bu sınıfın içinde bazı veriler saklamak ve daha sonra kullanmak istiyoruz. İşte property dediğim şey bu işe yarar. Property int, string, bool ve daha pek çok veri türünü saklar.
Bir class içinde değişken tanımladığında ve buna dışardan değer atamak istediğinde property kullanırsın. Bir property içinde get ve set gibi ifadeler olur.
property'e değer atamak istediğinde set, içindeki değeri okumak istediğinde get çalışır.
Koduna dönersek;
Turk T1 = new Turk();
T1.Dil = "türkçe ";
burada senin oluşturduğun Turk sınıfından bir örnek türetiliyor ve Dil özelliğine "türkçe" değerini atıyorsun. Bu esnada set bölümünü çalışıyor.
Eğer get bölümünü çalıştırmak ve ekrana yazdırmak isteseydin
Console.Write(T1.Dil);
yeterli olacaktı ki burada property'nin get bölümünü çalışacaktı.
abstract tamamen farklı. abstract ifadesi temel bir sınıf tanımlamak için kullanılır. Bu şu anlama gelir bir class, abstract ifadesi kullanıyorsa doğrudan kullanılmaz, başka sınıfların bunu miras alması gerekir. Bir nevi şablon gibi düşün. abstract sınıftan bir kopta oluşturamazsın. Aslında _dil değişkeni public değil private olsa daha anlamlı olurdu. Neden?
private string _dil;
Senin örneğindeki kod C# ve farklı dillerde kullanılan bir tekniği içeriyor. Şimdi eğer _dil private olsaydı, buna dışardan erişmek mümkün olmayacaktı. Yani sen şu şekilde _dil'e erişemeyecek, değerini değitiremeyecektin:
Turk T1 = new Turk();
T1._dil = "Fransızca";
Ama uygulaman gereği sen bunun değerini değiştirmek, bazen de atanan değer üzerinde işlem yapmak isteyebilirsin. O zaman ne yapacaksın?
İşte bu durumda public property tanımlıyorsun. Bu public property, private olan değişkenin değerini değiştiriyor ve okuyabiliyor. Bir nevi aracı gibi.
Bildiğin üzere private, sadece bulunduğu kapsamsan erişilebilir, metodun içindeyse sadece metodun içinden, class'ın içindeyse sadece class'ın içinden gibi. Fakat public öyle değildir, herkese açıktır. Anlaşılabilir olsun diye basitçe anlatmaya çalışıyorum.
private string _dil;
public string Dil
{
get
{
return _dil;
}
set
{
_dil = value;
}
}
Yukarıdaki kodu C#'da şu şekilde de yazabilirsin:
public string Dil{get;set;};
Buna da otomatik property deniyor. Senin için hem private alanı(_dil) hem de public özelliği otomatik tanımlar (Dil)
class Program
{
static void Main(string[] args)
{
// Turk sınıfından yeni bir örnek türetiyorsun.
Turk T1 = new Turk();
// T1 adındaki nesnenin Dil özelliğine erişiyor ve değer atıyorsun.
// Doğal olarak aslında _dil değişkeninin değerini değiştiriyorsun
T1.Dil = "türkçe ";
// T1 içindeki Konus() metodunu çağırıyorsun.
T1.Konus();
}
}
abstract class Insan
{
public abstract string Dil { get; set; }
public abstract void Konus();
}
class Turk : Insan
{
// public string _dil; bu satır private olursa daha mantıklı olur
private string _dil;
//private olan _dil'e dışardan nasıl erişeceksin? cevabı Dil property'sinde
// Dil sana dışardan private olan _dil değişkenine erişmeni sağlar.
// Dışardan erişmekten kasıt, kapsam dışı. Örneğin static void Main bölümüden erişim dışardan erişim olarak adlandırılır.
public override string Dil
{
get
{
return _dil; //private olan _dil değişkeninin değerini döndür
}
set
{
_dil = value; // private _dil değişkenine değer atama;
}
}
public override void Konus()
{
Console.WriteLine("{0} dilini konuşuyor", Dil);
Console.ReadLine(); // pencereyi kapatmadan beklemek için
}
}
alattin 6 yıl önce
@ahmet5847 yoruma yazamak yerine cevabımı düzenledim.
ahmet5847 6 yıl önce
1 . set property değer atamaksa yazdığımız kod yani _dil = value _dil in değerini al demek mi yoksa _dil e ata demek mi ?
ahmet5847 6 yıl önce
attığın kod bloğını çalıştırdığımda process is terminated due to stackoverflowexception hatası alıyorum nedenini anlamadım
alattin 6 yıl önce
_dil=value demek property'e atanan değeri al _dil değişkenine ata demek. Hangi kod blogu çalışmıyor anlamadım @ahmet5847
alattin 6 yıl önce
Kodda hata alman normal. Çünkü public override string Dil { get { return Dil; } set { Dil = value; } } ile property içinde kendine değer atamaya ve değer okumaya çalışıyorsun. Bu property private _dil değişkenine erişim için kullanılmalı @ahmet5847
alattin 6 yıl önce
@ahmet5847 çalışan kodu açıklamaları ile birlikte cevabıma ekledim.
alattin 6 yıl önce
Allah senden de razı olsun @ahmet5847 bu tür sorular yeni öğrenenler için çok faydalı
namespace Uygulama
{
class Program
{
static void Main(string[] args)
{
Turk T1 = new Turk();
T1.Dil = "türkçe ";
T1.Konus();
}
}
abstract class Insan
{
public abstract string Dil { get; set; }
public abstract void Konus();
}
class Turk : Insan
{
public override string Dil { get { return Dil; } set { Dil = value; } }
public override void Konus()
{
Console.WriteLine("{0} dilini konuşuyor", Dil);
}
}
}