با استفاده از هوش مصنوعی، C# را به Kotlin تبدیل کنید

ترجمه کد منبع به منبع از C# با استفاده از هوش مصنوعی شامل استفاده از تکنیک‌های پردازش زبان طبیعی (NLP) و الگوریتم‌های یادگیری ماشین برای تجزیه و تحلیل و درک کد منبع است.

اکشن‌اسکریپت

FAQ

چالش‌های ترجمه

مشکل ترجمه مثال نحوی C# مثال نحوی Kotlin امتیاز (۱-۱۰)
ویژگی‌ها با فیلدهای پشتیبان public int Age { get; set; } var age: Int = 0 6
متدهای گسترش public static int Square(this int x) fun Int.square() = this * this 7
نمایندگان و رویدادها public event EventHandler MyEvent; var myEvent: ((Int) -> Unit)? = null 8
نوع‌های قابل‌نقض int? nullableInt = null; val nullableInt: Int? = null 2
پرس‌وجوهای LINQ var result = from x in list select x; val result = list.map { it } 5
ایندکس‌ها public int this[int index] { get; set; } operator fun get(index: Int): Int 6
نحو Async/Await await Task.Run(() => { ... }); runBlocking { ... } 7
پارامترهای پیش‌فرض public void Method(int x = 0) fun method(x: Int = 0) 3
ساختارها در مقابل کلاس‌های داده struct Point { public int X; public int Y; } data class Point(val x: Int, val y: Int) 4
تطبیق الگو switch (obj) { case int i: ... } when (obj) { is Int -> ... } 5

ویژگی‌ها با فیلدهای پشتیبان

در C#، ویژگی‌ها می‌توانند فیلدهای پشتیبان داشته باشند که اجازه می‌دهد منطق اضافی در getter و setter وجود داشته باشد. به عنوان مثال:

public class Person
{
    private int age;
    public int Age
    {
        get { return age; }
        set { age = value; }
    }
}

در Kotlin، ویژگی‌ها ساده‌تر هستند و معمولاً از یک اعلان متغیر ساده استفاده می‌کنید:

class Person {
    var age: Int = 0
}

برای اطلاعات بیشتر، به مستندات ویژگی‌های C# و مستندات ویژگی‌های Kotlin مراجعه کنید.

متدهای گسترش

C# به شما اجازه می‌دهد تا متدهایی به انواع موجود اضافه کنید بدون اینکه آنها را تغییر دهید، از طریق متدهای گسترش:

public static class Extensions
{
    public static int Square(this int x) => x * x;
}

در Kotlin، شما می‌توانید با استفاده از توابع گسترش، عملکرد مشابهی را به دست آورید:

fun Int.square() = this * this

برای جزئیات بیشتر، به مستندات متدهای گسترش C# و مستندات توابع گسترش Kotlin مراجعه کنید.

نمایندگان و رویدادها

C# از نمایندگان و رویدادها برای مدیریت رویدادها استفاده می‌کند:

public event EventHandler MyEvent;

در Kotlin، شما می‌توانید از نوع‌های تابع برای دستیابی به رفتار مشابه استفاده کنید:

var myEvent: ((Int) -> Unit)? = null

برای اطلاعات بیشتر، به مستندات رویدادهای C# و مستندات نوع‌های تابع Kotlin مراجعه کنید.

نوع‌های قابل‌نقض

C# از نوع‌های قابل‌نقض با استفاده از نحو ? پشتیبانی می‌کند:

int? nullableInt = null;

Kotlin نیز از نوع‌های قابل‌نقض پشتیبانی داخلی دارد:

val nullableInt: Int? = null

برای جزئیات بیشتر، به مستندات نوع‌های قابل‌نقض C# و مستندات نوع‌های قابل‌نقض Kotlin مراجعه کنید.

پرس‌وجوهای LINQ

C# LINQ را برای پرس‌وجو از مجموعه‌ها فراهم می‌کند:

var result = from x in list select x;

در Kotlin، شما می‌توانید از تابع map استفاده کنید:

val result = list.map { it }

برای اطلاعات بیشتر، به مستندات LINQ C# و مستندات مجموعه‌ها Kotlin مراجعه کنید.

ایندکس‌ها

C# به شما اجازه می‌دهد تا ایندکس‌ها را برای کلاس‌ها تعریف کنید:

public int this[int index]
{
    get { return array[index]; }
    set { array[index] = value; }
}

در Kotlin، شما می‌توانید با استفاده از بارگذاری عملگر، عملکرد مشابهی را به دست آورید:

operator fun get(index: Int): Int { /*...*/ }

برای جزئیات بیشتر، به مستندات ایندکس‌ها C# و مستندات بارگذاری عملگر Kotlin مراجعه کنید.

نحو Async/Await

C# از async و await برای برنامه‌نویسی غیرهمزمان استفاده می‌کند:

await Task.Run(() => { /*...*/ });

Kotlin از کوروتین‌ها برای عملکرد مشابه استفاده می‌کند:

runBlocking { /*...*/ }

برای اطلاعات بیشتر، به مستندات Async/Await C# و مستندات کوروتین‌ها Kotlin مراجعه کنید.

پارامترهای پیش‌فرض

C# به متدها اجازه می‌دهد که پارامترهای پیش‌فرض داشته باشند:

public void Method(int x = 0) { /*...*/ }

Kotlin نیز از پارامترهای پیش‌فرض پشتیبانی می‌کند:

fun method(x: Int = 0) { /*...*/ }

برای جزئیات بیشتر، به مستندات پارامترهای پیش‌فرض C# و مستندات آرگومان‌های پیش‌فرض Kotlin مراجعه کنید.

ساختارها در مقابل کلاس‌های داده

C# از ساختارها برای نوع‌های مقداری استفاده می‌کند:

struct Point { public int X; public int Y; }

Kotlin از کلاس‌های داده برای اهداف مشابه استفاده می‌کند:

data class Point(val x: Int, val y: Int)

برای اطلاعات بیشتر، به مستندات ساختارها C# و مستندات کلاس‌های داده Kotlin مراجعه کنید.

تطبیق الگو

C# تطبیق الگو را با دستور switch فراهم می‌کند:

switch (obj)
{
    case int i:
        // ...
        break;
}

Kotlin از عبارت when برای عملکرد مشابه استفاده می‌کند:

when (obj) {
    is Int -> // ...
}

برای جزئیات بیشتر، به مستندات تطبیق الگو C# و مستندات عبارت When Kotlin مراجعه کنید.