PDA

View Full Version : مشکل با var



ahmad156
سه شنبه 17 اردیبهشت 1392, 19:00 عصر
سلام دوستان
چرا متغیری درون کلاس و بیرون از متدها رو نمیشه با var تعریف کرد؟

public partial class Admin_Admins : System.Web.UI.Page
{
var x;
}

raziee
سه شنبه 17 اردیبهشت 1392, 20:04 عصر
چون می بایست دارای مقدار اولیه باشه. زمانی که از var برای تعریف متغیر استفاده میکنید میبایست یک مفدار رو بهش انتساب بدید تا نوع داده مشخص بشه

ahmad156
سه شنبه 17 اردیبهشت 1392, 20:24 عصر
بحث مقدار دادن نیست اصلا کلمه var رو نمیشناسه.خیلی عجیبه برام!!

arefba
چهارشنبه 18 اردیبهشت 1392, 09:34 صبح
متغیر هایی رو که با var تعریف می کنید هنگام کامپایل برنامه به نوع داده ای که مشخص کرده اید تبدیل می شوند و اینکه نمیتونند هم زمان دو نوع داده ای داشته باشند
حالت public هم ندارند
دیگه دیگه
همینا

ahmad156
چهارشنبه 18 اردیبهشت 1392, 10:48 صبح
دوست عزیز بحث public یا private بودن نیست.!!
چرا بیرون از توابع نمیشناسه؟؟

tooraj_azizi_1035
چهارشنبه 18 اردیبهشت 1392, 19:32 عصر
در قسمت Remarks در این لینک گفته:http://msdn.microsoft.com/en-us/library/bb383973.aspx


The following restrictions apply to implicitly-typed variable declarations:


var cannot be used on fields at class scope.



اما چراش رو نگفته.

ahmad156
پنج شنبه 19 اردیبهشت 1392, 08:02 صبح
من دنبال چرایی همین هستم!

mmd2009
پنج شنبه 19 اردیبهشت 1392, 09:08 صبح
چرا بیرون از توابع نمیشناسه؟؟

با سلام

از این کلمه ی کلیدی Var فقط میشه بعنوان یک متغیر محلی استفاده کرد و خارج از این نمیتونید ازش استفاده بکنید. دلیلشم اینه که کامپایلر این اجازه رو بهتون نمیده. و جز قواعدی هست که براش مشخص شده ، البته یادمون نره که خیلی کار دیگه هم نمشه کرد با var مثل :

1- شما نمیتونید از var بعنوان یک نوع بازگشتی استفاده کنید ، مثل :


public var GetName()
{
return "mmd2009";
}


2- شما نمیتویند از var بعنوان یک پارامتری ورودی استفاده کنید ، مثل :


public void GetName(var userName)
{
//
}


3- شما نمیتونید از var در محدوده ی کلاس استفاده بکنید ، مثل :


public class User
{
private var userName = "mmd2009";
}


4- شما نمیتونید یک متغیر از نوع Object رو به یک var نسبت دهید زمانی که از قبل به Var نوعی اختصاص دادید ، مثل :


var s = 2009;
var h = "mmd";
object c = "";
s = c;
h = c;


5- شما نمیتوانید به var مقدار null نسبت دهید ، مثل :


var a = null;


6- شما نمیتونید از کلمه کلیدی Var برای تعریف عبارات lambda استفاده کنید ، مثل :


public class Main
{
public Main()
{
// this will not work
var @whereVar = d => d.UserName.Contains("mmd2009");
// this will work
Func<User, bool> @whereFunc = d => d.UserName.Contains("mmd2009");
}
}

public class User
{
public string UserName { get; set; }
}


7- شما نمیتونید یک متغیر از نوع Implicitly-typed ایجاد کنید به طوری که به اون مقدار اولیه ندید ، مثل :


var a;


8 - شما نمیتونید یک list جنریک از نوع Var ایجاد بکنید ، مثل :


List<var> list=new List<var>();


9- شما نمیتونید خروجی tResult یک delegate رو از نوع Var مقدار دهی کنید ، مثل :


public class Main
{
public Main()
{
Func<User, var> @whereFunc = d => d.UserName.Contains("mmd2009");
}
}

public class User
{
public string UserName { get; set; }
}


10- شما نمیتونید از Var بعنوان یک nullable استفاده بکنید : مثل : ( مثل عبارت 5 هست با این توجه که میخوستم به صورت صریح بگم که نمیشه استفاده کرد بدین صورت هم )


Nullable<var> a = 20;
var? d = 20;


شاید خیلی نباید دیگه هم باشه که من حضور ذهن ندارم در حال حاضر
موفق باشید