مقداردهی یک متغیر در دو تابع سازنده درسته؟
آیا راهی غیر از اینکار وجود داره؟ حس می کنم درست نیست
private int id { get; set; }
public int code { get; set; }
public bool blacklist { get; set; }
public persons(int id, int code,bool blacklis)
{
this.id = id;
this.code = code;
this.blacklist = blacklist;
}
public persons(int id)
{
this.id = id;
}
نقل قول: مقدار دهی یک متغییر در دو تابع سازنده درسته؟
نقل قول:
نوشته شده توسط
aliramazani
آیا راهی غیر از اینکار وجود داره؟ حس می کنم درست نیست
private int id { get; set; }
public int code { get; set; }
public bool blacklist { get; set; }
public persons(int id, int code,bool blacklis)
{
this.id = id;
this.code = code;
this.blacklist = blacklist;
}
public persons(int id)
{
this.id = id;
}
سلام
درسته
منتها چون اصل برنامه نویسی اینه که کد یه جا تعریف و در جاهای دیگه فراخونی بشه ، بهتره که از متد سازنده ، اون اورلود متد سازنده ی کامل تر رو فراخونی کنید و بقیه ی مقادیر رو حالا اگه خواستید بدین یا اینکه مقدار پیش فرض بذارید :
private int id { get; set; }
public int code { get; set; }
public bool blacklist { get; set; }
public persons(int id, int code, bool blacklis)
{
this.id = id;
this.code = code;
this.blacklist = blacklist;
}
public persons(int id) : this(id, 0, false)
{
}
نقل قول: مقدار دهی یک متغییر در دو تابع سازنده درسته؟
با سلام.
از Optional Parameters هم میتونید استفاده کنید ، بدین صورت :
public class persons
{
private int id { get; set; }
public int code { get; set; }
public bool blacklist { get; set; }
public persons(int id, int code = 0, bool blacklist = false)
{
this.id = id;
this.code = code;
this.blacklist = blacklist;
}
}
و برای فراخوانی نیز بدین گونه عمل کنید :
persons persons = new persons(id: 1);
موفق باشید
نقل قول: مقدار دهی یک متغیر در دو تابع سازنده درسته؟
یه سوال دیگه
ببینید اینجا برای blackList که یک متغیر از نوع boolean هستش مقدار false یا true را در نظر گرفتیم.
حالا اگر متغیر ما از نوع byte[] باشه باید برای تهی کردنش چی بنویسیم؟
مثلا پراپرتی اینطور:
private byte[] picture { get; set; }
public persons(int id, int code = 0, bool blacklist = false,byte[]picture?????)
{
this.id = id;
this.code = code;
this.blacklist = blacklist;
}
نقل قول: مقدار دهی یک متغیر در دو تابع سازنده درسته؟
ببینید در مثال قبلی ما عمل "تهی" کردن رو برای مقادیر اولیه آرگومان ها استفاده نکردیم بلکه مقادیر default رو به آرگومان های سازنده دادیم. یعنی اگر مثال بالا رو اینطوری هم می نوشتیم مشکلی وجود نداشت :
public persons(int id, int code = default(int), bool blacklis = default(bool))
{
this.id = id;
this.code = code;
this.blacklist = blacklis;
}
ولی برای آرایه ای از بایت ها ( []byte ) اوضاع فرق میکنه ، یعنی شما میتونید بدین دو صورت بنویسید :
byte[] picture = null
or
byte[] picture = default(byte[])
در هر دوحالت مقدار null به picture اختصاص داده می شود.
موفق باشید
نقل قول: مقداردهی یک متغیر در دو تابع سازنده درسته؟
نکاتی در مورد سی شارپ 7.1 رو یادآور بشم ، اگر با سی شارپ 7.1 کار کنید برای Optional Parameter Default Value به جای :
public persons(int id, int code = default(int), bool blacklis = default(bool))
می توانید بنویسید :
public persons(int id, int code = default, bool blacklis = default)
و همچنین برای Local Variable Defaults میتونید به این صورت عمل کنید :
byte[] picture = default
و موارد بیشتر دیگر که میتونید از مراجع اصلی دنبال کنید.
موفق باشید