PDA

View Full Version : Property با پارامتر



SabaSabouhi
سه شنبه 01 آبان 1386, 10:38 صبح
با سلام
آیا توى #C مى‌شه مثل VB خاصیت‌هاى پارامترى داشت؟ مثل: MyProperty("Test", 1) = 1

صبا صبوحى

once4ever
سه شنبه 01 آبان 1386, 16:14 عصر
منظورت چیه؟

رها
سه شنبه 01 آبان 1386, 16:49 عصر
توی سی شارپ همچین امکانی وجود نداره به جاش از متد باید استفاده کنید.

PC2st
سه شنبه 01 آبان 1386, 17:05 عصر
بله میشه ولی با مفهوم Indexer (ایندکسر).

SabaSabouhi
یک شنبه 06 آبان 1386, 09:02 صبح
بله میشه ولی با مفهوم Indexer (ایندکسر).

با سلام و سپاس
اما چطورى؟ مى‌خوام چند تا پارامتر داشته باشم، مثل یک آرایه‌ى دو بعدى یا سه بعدى.
و این که مثلاً یکى از پارامترها هم رشته باشه.

مثل شىء DataRow که مى‌تونید با نام ستون به مقدار اون دسترسى داشته باشید:



DataRow MyRow = MyTable.Rows[0];
MyRow["KeyID"] = 1;



مى‌خواهیم چیزى شبیه به این داشته باشم.

صبا صبوحى

PC2st
یک شنبه 06 آبان 1386, 16:39 عصر
یک پروژه Console App ایجاد کرده و کدهای زیر رو در اون copy\paste کنید:


using System;

class Program
{
static void Main (string [] args)
{
A a = new A ();
string b1 = a.Data ["b1"].Value;
string b2 = a.Data ["b2"].Value;
Console.WriteLine (b1 + " : " + b2);
Console.ReadKey ();
}
}

class A
{
private BCollection collect = new BCollection ();

public BCollection Data
{
get
{
return this.collect;
}
}
}

class BCollection
{
private B
b1 = new B ("Hello"),
b2 = new B ("Bye");

public B this [string name]
{
get
{
switch (name.ToUpper())
{
case "B1":
return b1;
case "B2":
return b2;
default :
throw new ArgumentException (name + " not found");
}
}
}
}

class B
{
private string _value;

public B (string value)
{
this._value = value;
}

public string Value
{
get
{
return this._value;
}
}
}

موارد مهم رو بصورت bold (تو پر و غلیظ) مشخص کردم. امیدوارم کدها رو خوانا نوشته باشم...