آموزش ASP.NET Core MVC

بیان ضمنی نوع متغیر و انواع بی نام

با سلام خدمت کاربران عزیز سایت میزفا ، با یکی دیگر از جلسات آموزشی طراحی سایت با ASP.NET Core در خدمت شما هستم بابت تاخیر به وجود آمده در انتشار مقالات آموزشی عذر خواهی می‌کنم چون در این مدت در تلاش بودم که دوره آموزش ویدیویی ASP.NET Core2 را برگزار کنم. و در حال حاضر این دوره آموزشی در حال برگزاری است.

بیان ضمنی نوع متغیر و انواع بی نام

همانطور که در کد زیر مشاهده می کنید از نوع داده var به جای  [ ]string استفاده نموده ایم زمانی که از var به جای نوع داده استفاده می کنیم کامپایلر خودش به صورت خودکار نوع داده را تشخیص می دهد.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using LearnCSharp.Models;

namespace LearnCSharp.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Sample1()
        {
            var names = new[] { "Kayak", "Lifejacket", "Soccer ball" };
            ViewData["Products"]= names;
            return View();
        }
    }
}

نکته : در کد بالا برای ارسال اطلاعات از Controller به View از شی ViewData استفاده نموده ایم ، ViewData شبیه به ViewBag است و برای انتقال اطلاعات از کنترلر به View از آن استفاده می شود.

کد بالا به این معنی نیست که متغیر names دارای نوعی نیست معنی آن این است که کامپایلر نوع names را خودش تشخیص می‌دهد ، پس به این صورت نوع names که یک آرایه از نوع string هست توسط کامپایلر به صورت خودکار تشخیص داده میشود. حالا یک View برای اکشن متد Sample1 ایجاد کنید و کدهای زیر در آن بنویسید. در کد زیر با استفاده از حلقه foreach اعضای شی ViewData[“Products”] را پیمایش کرده و آنها را در خروجی چاپ می‌کنیم.

@{
Layout = null;
}

<ul>
@foreach (var item in ViewData["Products"] as string[])
{
    <li>
       @item
   </li>
}
</ul>

اجرای برنامه خروجی زیر را در پی خواهد داشت.

Kayak

Lifejack

Soccer ball

کاربرد انواع بی نام

ترکیب روش مقداردهی آغازین و انواع بی نام امکان ایجاد اشیائی را برای انتقال اطلاعات بین کنترلر و‌نما بدون نیاز به کلاس ویژه ای فراهم می‌کند . کد زیر مثالی از این روش را نشان می‌دهد.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using LearnCSharp.Models;

namespace LearnCSharp.Controllers
{
    public class HomeController : Controller
    { 
        public IActionResult Sample2()
        {
            var products = new[]
            {
                new {Name="Kayak",Price=275M},
                new {Name="Lifejacket",Price=48.95M},
                new {Name="Soccer ball",Price=19.50M},
                new {Name="Corner flag",Price=34.9M},
            };
            ViewData["Products"] = products.Select(p => p.Name);
            return View();
        }
    }
}

در کد بالا هر یک از اشیاء آرایه ی products نوعی بی نام هستند ، این به معنی آن است که نوع درست آنها به صورت خودکار توسط کامپایلر تشخیص داده خواهد شد . حالا یک View برای اکشن متد Sample2 ایجاد کنید و کدهای زیر را در آن بنویسید :

@{
Layout = null;
}

<ul>
@foreach (var item in ViewData["Products"] as IEnumerable<string>)
{
    <li>
       @item
   </li>
}
</ul>

اجرای برنامه منجر به خروجی زیر می شود:

Kayak
Lifejack
Soccer ball
Corner flag

کامپایلر #c بر پایه ی نام ها و انواع پارامتر ها ، کلاس مورد نیاز را خودش ایجاد می‌کند . دو‌ شیء بی نامی که دارای خصوصیاتی با اسامی یکسان باشند ، به یک کلاس نسبت داده خواهند شد. به همین دلیل همه اشیاء آرایه‌ی products به کلاس واحدی که به صورت خودکار ایجاد خواهد شد ، نسبت داده خواهند شد (دارای خاصیت های هم نام هستند)
توجه کنید که در این مورد ،  از آنجا که کلاس و نوع دربرگیرنده این خاصیت ها در زمان کامپایل ایجاد می‌شود ، چاره ای جز استفاده از var نبوده است .

برای نمایش این موضوع ، کد بالا را طوری تغییر داده ایم که به جای مقادیر خاصیت Name ، انواع ایجاد شده را در خروجی نمایش دهد.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using LearnCSharp.Models;

namespace LearnCSharp.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Sample3()
        {
            var products = new[]
            {
                new {Name="Kayak",Price=275M},
                new {Name="Lifejacket",Price=48.95M},
                new {Name="Soccer ball",Price=19.50M},
                new {Name="Corner flag",Price=34.9M},
            };
            ViewData["GetType"] = products.Select(p=>p.GetType().Name);
            return View();
        }
    }
}

توجه : در کد بالا با استفاده از متد GetType()  انواع ایجاد شده گرفته می شود حالا یک View برای اکشن متد Sample3 ایجاد کنید و کدهای زیر را در آن بنویسید.

@{
Layout = null;
}

<ul>
@foreach (var item in ViewData["GetType"] as IEnumerable<string>)
{
    <li>
       @item
   </li>
}
</ul>

اجرای برنامه نشان می دهد که همه اشیاء داخل آرایه دارای نوع یکسانی شده اند (تعیین شده توسط کامپایلر) . خروجی کد به صورت زیر خواهد بود.

    <>f__AnonymousType0`2
    <>f__AnonymousType0`2
    <>f__AnonymousType0`2
    <>f__AnonymousType0`2

به پایان این جلسه آموزشی رسیدیم امیدوارم که از این جلسه آموزشی لذت برده باشید .

برچسب ها

آرزو ابراهیمی

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

نوشته های مشابه

‫3 نظر داریم، تو هم نظر بذار، پاسخ کامل میدیم :)

  1. سلام

    جالبه برام از وقتی اومدم سایتتون 1 ساعت گذشته و متوجه نشدم خخخخ

    هرچی میچرخم اینجا قسمت هایی که دوست دارم پیدا میکنم

    سایت خوبی پیدا کردم ولی سر سری سایتتونو دیدم حالا سایتتونو تو گوشیم سیو کردم وقتم ازاد شد میام دوباره میبینم

    ممنون

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
سایت خود را در گوگل مدیریت کنید + ۱۵ ساعت فیلم آموزشیجزئیات بیشتر اینجا کلیک کنید
بستن
با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

عضویت در خبرنامه هفتگی برای دریافت:

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
ترک میزفا خوب نیست!
دوره سئو، رایگان شد.
یک چیز متفاوت تجربه کنید
کاراکتر اشاره گر
دوره سئو، رایگان شد.
یک چیز متفاوت تجربه کنید
کاراکتر اشاره گر