PDA

View Full Version : چطور در سی شارپ متغیر جنرال تعریف کنم؟



shahe_iran
چهارشنبه 19 مهر 1391, 14:42 عصر
سلام

من میخوام یک متغیری داشته باشم که بتونم توی توابع و کلاس های مختلف ازش استفاده کنم اما متغیر ها فقط داحل {} که مقدار دهی میشند معتبر هستند!!

یعنی مثلا :



public partial class Form1 : Form
{


public Form1()
{
InitializeComponent();
}




double slope_line1;
double slope_line2;

public void Form1_Load(object sender, EventArgs e)
{
.
.
.
.
.
.
.
.


foreach (LineSegment2D line1 in lines)
{
foreach (LineSegment2D line2 in lines)
{
if ((line1.P1.X - line1.P2.X) != 0 && (line2.P1.X - line2.P2.X) != 0)
{
double slope_line1 = (line1.P1.Y - line1.P2.Y) / (line1.P1.X - line1.P2.X);
double slope_line2 = (line2.P1.Y - line2.P2.Y) / (line2.P1.X - line2.P2.X);
}
double line1_degree = (Math.Atan(slope_line1) * 180 / Math.PI);
double line2_degree = (Math.Atan(slope_line2) * 180 / Math.PI);



الان توی خط آخر و یکی مونده به آخر متغیر های slope_line رو نمیشناسه ، چون داخل if مقدار دهی شده!!

در صورتی که توی کلاس اصلی اون بالا تعریفش کردم!


چطور میشه این مشکل و مشکلاتی از این دست رو برطرف کرد؟

shahe_iran
چهارشنبه 19 مهر 1391, 14:50 عصر
......................

Mahmoud.Afrad
چهارشنبه 19 مهر 1391, 14:54 عصر
به خاطر تکراری بودن نام خطا میگیره چون شما اون بالا دو متغیر تعریف کردی و دوباره داخل if داری دو متغیر دیگه با همون نام ها تعریف میکنی درصورتی که باید به اینصورت استفاده کنی:

slope_line1 = (line1.P1.Y - line1.P2.Y) / (line1.P1.X - line1.P2.X);
slope_line2 = (line2.P1.Y - line2.P2.Y) / (line2.P1.X - line2.P2.X);

حسین شهریاری
چهارشنبه 19 مهر 1391, 14:57 عصر
اگه میخاین مقدارش حفظ بشه(بین کلاسهای مختلف) باید Public Static تعریفش کنین.
در ثانی شما نباید اجازه بدید از خارجه کلاس به فیلدتون دسترسی داشته باشن، درحالی که باید فیلد را Private تعریف کرده و برای دسترسی به اون یه خصوصیت از نوع Public تعریف کنید

shahe_iran
پنج شنبه 20 مهر 1391, 21:52 عصر
دوستان ممنون از راهنماییتون