PDA

View Full Version : دو تا سوال در مورد C#.net داشتم(struct و فایل متنی)



mahdi bg
شنبه 17 آذر 1386, 22:19 عصر
سلام
1-من یک استراکت struct تعریف کردم مثل شکل زیر
ولی هر کار می کنم نمی تونم به فیلد هاش مقدار بدم مشکل کجاست؟
(یک button روی فرم گذاشتم و میخوام داخل ریداد کلیک button از استراک
استفاده کنم)

http://i2.tinypic.com/7x934zs.jpg

2-چطوری می تونم از داخل برنامه
2-1 یک فایل متنی رو فقط خواندنی باز کنم
2-2 یک فایل متنی رو برای نوشتن باز کنم
2-3 توی یک فایل بنویسم
2-4 از فایل بخونم
2-5 چک کنم فایل متنی وجود داره یا نه
2-6 فایل رو ببندم
ممنون

manitack
یک شنبه 18 آذر 1386, 01:22 صبح
برای کار با فایل

manitack
یک شنبه 18 آذر 1386, 01:43 صبح
در مورد Struct هم اگر اعضاء رو Public تعریف کنی دسترسی داری هر چند این با کپسوله کردن تناقض پیدا میکنه.

mahdi bg
یک شنبه 18 آذر 1386, 05:08 صبح
سلام


در مورد Struct هم اگر اعضاء رو Public تعریف کنی دسترسی داری هر چند این با کپسوله کردن تناقض پیدا میکنه.

یعنی چی؟
من یک تازه کار توی C#.net ام

hassan razavi
یک شنبه 18 آذر 1386, 06:56 صبح
برای Public کردن اعضاء ، کدتون رو اینطوری کنید


struct mystruct
{
public int i,j,k;
public char ch1,cg2;
}

mr_moghimkhani
یک شنبه 18 آذر 1386, 08:38 صبح
اصلاً لزومی به Public کردن نیست. باید شیئ گرفته شده را new کنی

mr_moghimkhani
یک شنبه 18 آذر 1386, 08:43 صبح
اینطوی بنویس

mystruct st1=new mystruct()
حالا دیگه هیچ مشکلی نداری

hassan razavi
یک شنبه 18 آذر 1386, 08:57 صبح
دوست عزیز علاوه بر new کردن ، اعضاء Struct نیز بایند Public باشند. چون اگه از کلمه Public استفاده نشه ، بطور پیش فرض Private در نظر گرفته میشه. پس میشه :


struct mystruct
{
public int i,j,k;
public char ch1,cg2;
}

mystruct st1=new mystruct();
st1.i=5;

mr_moghimkhani
یک شنبه 18 آذر 1386, 09:18 صبح
با عرض پوزش:
به دلیل اینکه struct در همینClassقرار داره، پس برای تمامی اعضا و توابع این کلاس قابل دسترسی است. زمانی از Public و Private استفاده میکنیم که بخواهیم از کلاس دیگری به آن دسترسی پیدا کنیم. که این خود نیاز به شرح زیادی دارد که قابل توضیح در این قسمت نیست. مشکل این Struct فقط New نشدن است و Public کردن اعضاء آن فقط اصول را بهم میریزد.
با تشکر.

hassan razavi
یک شنبه 18 آذر 1386, 09:24 صبح
دوست عزیز ، شما کد رو یکبار خودتون پیاده سازی کنید تا متوجه بشید.
وقتی اعضاء یک Class یا Struct بصورت Public نباشه ، در خارج از آن Class یا Struct قابل دسترسی نمی باشند. مشکل public یا Private بودن خود Class یا Struct نیست بلکه Member های اونه.
پیشنهاد میکنم که یکبار Struct رو پیاده سازی کنید.

سار
یک شنبه 18 آذر 1386, 09:41 صبح
یه استادی داشتم می گفت استراکت، کلاسی است که .... .

mr_moghimkhani
یک شنبه 18 آذر 1386, 09:56 صبح
وقتی اعضاء یک Class یا Struct بصورت Public نباشه ، در خارج از آن Class یا Struct قابل دسترسی نمی باشند. مشکل public یا Private بودن خود Class یا Struct نیست بلکه Member های اونه.
پیشنهاد میکنم که یکبار Struct رو پیاده سازی کنید.

ممنون دوست عزیز، من اکنون در جایی هستم که امکان نوشتن کد را ندارم، ولی چند سایت را دیدم که مطلب شما را تأیید کرند.ولی شاید بهتر باشد که اعضا را Private تعریف کرده و برای دسترسی به آنها از تابع یا Property با خصوصیت Public استفاده کند.


struct mystruct
{
Private int i;
public int I
{
get { return i ;}
set { i=value ;}
}
}

mystruct st1=new mystruct();
st1.I=5;
int k=st1.I;

mahdi bg
دوشنبه 19 آذر 1386, 23:02 عصر
سلام
(به جای اینکه تک تک کلید های
تشکر رو بزنم هیمن جا از همه دوستان تشکر میکنم)

دو تا مشکلم حل شد فقط یک سوال موند

در مورد Struct هم اگر اعضاء رو Public تعریف کنی دسترسی داری هر چند این با کپسوله کردن تناقض پیدا میکنه.

یعنی چی؟

mr_moghimkhani
سه شنبه 20 آذر 1386, 10:37 صبح
سلام
(به جای اینکه تک تک کلید های
تشکر رو بزنم هیمن جا از همه دوستان تشکر میکنم)

دو تا مشکلم حل شد فقط یک سوال موند


یعنی چی؟

پیشنهاد میکنم مفاهیم شیئ گرایی در سی شارپ رو مطالعه کنی. به نظر من خیلی جالب، خیلی جذاب و خیلی مهمه.
موفق باشی.

mehdi balad
سه شنبه 20 آذر 1386, 12:40 عصر
با عرض سلام
یکی دیگه از کارهایی که میتونی بکنی نوشتن یه متد سازنده دارای پارامتره
که میتونی داخلش اعضای private یا public رو مقداردهی اولیه کنی


امیدوارم مشکلت حل شده باشه.

silentrise
چهارشنبه 21 آذر 1386, 01:21 صبح
سلام
چرا از Class استفاده نمی کنی این بهینه تر است اگه خواستی نمونه هر جفتش رو بهت میدم ولی من Class ترجیح میدم.
فیلد های اولیه را private و با درست کردن property ان را public تعریف کنید.تا بتوانید مستقیم از فیلد ها استفاده نکنید.