C# 10 new feature CallerArgumentExpression, argument check and more

The CallerArgumentExpression has been discussed for years, it was supposed to a part of C# 8.0 but got delayed. Finally this month it is delivered along with C# 10 and .NET 6.

CallerArgumentExpressionAttribute and argument compilation

In C# 10, [CallerArgumentExpression(parameterName)] can be used to direct the compiler to capture the specified argument’s expression as text. For example:

using System.Runtime.CompilerServices;

void Function(int a, TimeSpan b, [CallerArgumentExpression("a")] string c = "", [CallerArgumentExpression("b")] string d = "")
    Console.WriteLine($"Called with value {a} from expression '{c}'");
    Console.WriteLine($"Called with value {b} from expression '{d}'");

When calling above function, The magic happens at compile time:

Function(1, default);
// Compiled to: 
Function(1, default, "1", "default");

int x = 1;
TimeSpan y = TimeSpan.Zero;
Function(x, y);
// Compiled to:
Function(x, y, "x", "y");

Function(int.Parse("2") + 1 + Math.Max(2, 3), TimeSpan.Zero - TimeSpan.MaxValue);
// Compiled to:
Function(int.Parse("2") + 1 + Math.Max(2, 3), TimeSpan.Zero - TimeSpan.MaxValue, "int.Parse(\"2\") + 1 + Math.Max(2, 3)", "TimeSpan.Zero - TimeSpan.MaxValue");

Function’s parameter c is decorated with [CallerArgumentExpression("a")]. So when calling Function, C# compiler will pickup whatever expression passed to a, and use that expression’s text for c. Similarly, whatever expression is used for b, that expression’s text is used for d.

Argument check

The most useful scenario of this feature is argument check. In the past, a lot of argument check utility methods are created like this:

public static partial class Argument
    public static void NotNull<T>([NotNull] T? value, string name) where T : class
        if (value is null)
            throw new ArgumentNullException(name);

    public static void NotNullOrWhiteSpace([NotNull] string? value, string name)
        if (string.IsNullOrWhiteSpace(value))
            throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.StringCannotBeEmpty, name));

    public static void NotNegative(int value, string name)
        if (value < 0)
            throw new ArgumentOutOfRangeException(name, value, string.Format(CultureInfo.CurrentCulture, Resources.ArgumentCannotBeNegative, name));

So they can be used as:

public partial record Person
    public Person(string name, int age, Uri link)
        Argument.NotNullOrWhiteSpace(name, nameof(name));
        Argument.NotNegative(age, nameof(age));
        Argument.NotNull(link, nameof(link));

        this.Name = name;
        this.Age = age;
        this.Link = link.ToString();

    public string Name { get; }
    public int Age { get; }
    public string Link { get; }

The problem is, it is very annoying to pass argument name every time. There are some ways to get rid of manually passing argument name, but these approaches introduces other issues. For example, a lambda expression with closure can be used:

public partial record Person
    public Person(Uri link)
        Argument.NotNull(() => link);

        this.Link = link.ToString();

And this version of NotNull can take a function:

public static partial class Argument
    public static void NotNull<T>(Func<T> value)
        if (value() is null)
            throw new ArgumentNullException(GetName(value));

    private static string GetName<T>(Func<T> func)
        // func: () => arg is compiled to DisplayClass with a field and a method. That method is func.
        object displayClassInstance = func.Target!;
        FieldInfo closure = displayClassInstance.GetType()
            .GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
        return closure.Name;

See my post on what is closure and how C# compiles closure.

Lambda expression can be also compiled to expression tree. So NotNull can be implemented to take an expression too (See my post on what is expression tree and how C# compiles expression tree):

public static partial class Argument
    public static void NotNull<T>(Expression<Func<T>> value)
        if (value.Compile().Invoke() is null)
            throw new ArgumentNullException(GetName(value));

    private static string GetName<T>(Expression<Func<T>> expression)
        // expression: () => arg is compiled to DisplayClass with a field. Here expression body is to access DisplayClass instance's field.
        MemberExpression displayClassInstance = (MemberExpression)expression.Body;
        MemberInfo closure = displayClassInstance.Member;
        return closure.Name;

These approaches introduce the lambda syntax and performance overhead at runtime. And they are extremely fragile too. Now C# 10’s CallerArgumentExpression finally provides a cleaner solution:

public static partial class Argument
    public static T NotNull<T>([NotNull] this T? value, [CallerArgumentExpression("value")] string name = "")
        where T : class =>
        value is null ? throw new ArgumentNullException(name) : value;

    public static string NotNullOrWhiteSpace([NotNull] this string? value, [CallerArgumentExpression("value")] string name = "") =>
            ? throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.StringCannotBeEmpty, name), name)
            : value;

    public static int NotNegative(this int value, [CallerArgumentExpression("value")] string name = "") =>
        value < 0
            ? throw new ArgumentOutOfRangeException(name, value, string.Format(CultureInfo.CurrentCulture, Resources.ArgumentCannotBeNegative, name))
            : value;

Now the argument check can be shorter and fluent:

public record Person
    public Person(string name, int age, Uri link) => 
        (this.Name, this.Age, this.Link) = (name.NotNullOrWhiteSpace(), age.NotNegative(), link.NotNull().ToString());
        // Compiled to:
        // this.Name = Argument.NotNullOrWhiteSpace(name, "name");
        // this.Age = Argument.NotNegative(age, "age");
        // this.Link = Argument.NotNull(link, "link").ToString();

    public string Name { get; }
    public int Age { get; }
    public string Link { get; }

The argument name is generated at compile time and there is no performance overhead at runtime at all.

Assertion and logging

The other useful scenarios could be assertion and logging:

static void Assert(bool condition, [CallerArgumentExpression("condition")] string expression = "")
    if (!condition)
        Environment.FailFast($"'{expression}' is false and should be true.");

Assert(y > TimeSpan.Zero);
// Compiled to:
Assert(y > TimeSpan.Zero, "y > TimeSpan.Zero");

static void Log<T>(T value, [CallerArgumentExpression("value")] string expression = "")
    Trace.WriteLine($"'{expression}' has value '{value}'");

Log(Math.Min(Environment.ProcessorCount, x));
// Compiled to:
Log(Math.Min(Environment.ProcessorCount, x), "Math.Min(Environment.ProcessorCount, x)");

Use for older projects

If .NET 6.0 SDK is installed, C# 10 is available, where CallerArgumentExpression can be used targeting to .NET 5 and .NET 6. For older project targeting older .NET or .NET Standard, CallerArgumentExpressionAttribute is not available. Fortunately C# 10 and this feature can still be used with them, as long as .NET 6.0 SDK is installed. Just manually add the CallerArgumentExpressionAttribute class to your project and use it like the built-in attribute:

#if !NET5_0 && !NET6_0
namespace System.Runtime.CompilerServices;

/// <summary>
/// Allows capturing of the expressions passed to a method.
/// </summary>
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
internal sealed class CallerArgumentExpressionAttribute : Attribute
    /// <summary>
    /// Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.CallerArgumentExpressionAttribute" /> class.
    /// </summary>
    /// <param name="parameterName">The name of the targeted parameter.</param>
    public CallerArgumentExpressionAttribute(string parameterName) => this.ParameterName = parameterName;

    /// <summary>
    /// Gets the target parameter name of the <c>CallerArgumentExpression</c>.
    /// </summary>
    /// <returns>
    /// The name of the targeted parameter of the <c>CallerArgumentExpression</c>.
    /// </returns>
    public string ParameterName { get; }

It should be internal so that when this assembly is referenced by another assembly, there won’t conflict with the built-in version of [CallerArgumentExpression]. Then C# 10‘s compiler will pick it up and the above magic will happen.


  • Nah, I’ll pass. That code looks horrible, the intent of syntax sugar is usually to clean up code.

  • Typical of many C# features released in recent years - horrible, unreadable code, all for the sake of avoiding typing a couple more lines of code.

  • features are pretty amazing, loved to read

  • public Person(string name, int age, Uri link) => please explain this query

  • It is awesome to assign a value to a variable simultaneously from both left and right, and like in Highlander, only one remains.

    [CallerArgumentExpression("a")] string c = ""

    Looks like the C# team is envy of C, where you can not be sure to distinguish a valid source code from something get out of a CRC-failed zip file with a single look.

  • @Ad Trens

    That is just a syntactic sugar.

    public Point(int x, int y, int z)
    this.X = x;
    this.Y = y;
    this.Z = z;

    can be written as:

    public Point(int x, int y, int z) =>
    (this.X, this.Y, this.Z) = (x, y, z)

    The compilation result are the same.

  • I really start to hate C#. It's become such a bloated language that it's become absolutely gross to use. What is the purpose of this? Making everything unreadably terse is an awful goal to have as a language designer.

    This is just awful:

    public Person(string name, int age, Uri link) =>
    (this.Name, this.Age, this.Link) = (name.NotNullOrWhiteSpace(), age.NotNegative(), link.NotNull().ToString());

    So much magic that a developer has to first learn before they can read this code and make up their mind if this is actually doing what you'd want it to do or not. Absolutely gross.

    Just keep it simple. A simple if (x == null) throw ArgumentNullException(...); is really not that bad that it needed "improvement".

    C# is becoming an awful language. As a very senior developer at my company I increasingly hate to use C# for new projects because new developers have such a hard time to become good at it. When we realised that .NET and C# keep changing fundamentally around the time netstandard2.0 was discontinued we started to use nodejs and Go for all our new projects and most of our teams have seen a boost in productivity. Productivity doesn't come from terse code, it comes from easy to read code which someone can understand fast and make quick changes to it without having to constantly google the meaning of obscure features every 5 minutes.

  • Great. So `CallLibraryFunction( EncodeString("My vulnerable data") );` suddenly becomes broken?

  • > Great. So `CallLibraryFunction( EncodeString("My vulnerable data") );` suddenly becomes broken?
    This is broken from the beginning since the "My vulnerable data" is written as-is in the output binary.

  • Your code should probably have internal class CallerArgumentExpressionAttribute so it doesn't interfere with other projects referencing it that are .NET 6+.

  • @HA
    Thank you. Updated the code.

  • I agree with many of the posts that trying to jam more meaning into fewer characters makes for less readable code, which makes it harder to maintain the code moving forward. Net loss imho.

  • Thank you for the code sir. Keep it up

  • https://medical-phd.blogspot.com/

  • https://tex.com.tw/blogs/manufacture/tex-shinobi-diy-build-guide?comment=127430426779#comments

  • Thank you so much for sharing this with us. Great job! Keep it up!

  • Mcafee antivirus works on the principle of a threat-based detection. It is used on any device that runs on Microsoft windows operating system.

    This post provides an overview of the steps that should be taken in order to activate the software. To activate the Mcafee antivirus, you need to update it first. You can do this by visiting the website www mcafee activate where you baought your Mcafee software and download the latest version for free.

    Step 1: Download Mcafee Antivirus or Alive on your computer

    Step 2: Open the Mcafee application and sign into your account

    Step 3: Click on 'Lock' icon in the top right corner of your desktop

    Step 4: Click 'Activate' button at the bottom of your screen

    Step 5: Open Control Panel > Security Center > Virus & Threats tab and click 'Activate now' button

    If you still need help then contact McAfee activation customer support team, with the help of a tech-savvy friend, you can easily activate McAfee anti-virus.

  • Science reveals a lot of secret information and helps us with different kinds of discoveries. There are many options for the development of this environment where people could get connected with various features. Thanks for sharing this post.

  • Thanks for sharing such great information with us. Your Post is beneficial and the information is reliable for new readers. Thanks again for sharing.

  • nice job guys i like your content

  • We can help you print your label

  • Your post is related to developers. They can get code and solve his problem. With that, in your area, you can avail of our <a href="https://actionairduct.net/ac-repair-and-maintenance-service-denver/”>AC Repair and Maintenance Services Denver</a> from our experts and you can resolve you all problems.

  • Undeniably believe that which you stated. Your favorite reason appeared to be on the net the simplest thing to be aware of. I say to you, I certainly get annoyed while people consider worries that they plainly do not know about. You managed to hit the nail upon the top as well as defined out the whole thing without having side effect , people can take a signal. Will likely be back to get more. Thanks

  • Learning is the process which I think never be ended because in every stage of life a person have able to learn new things, modify and implement to his life.

  • This is such a great post, and was thinking much the same myself. Be sure to keep writing more great articles like this one.

  • I know this is extremely boring and you are skipping to succeeding comment, however I just needed to throw you a big thanks you cleared up some things for me!

  • C# is one of the top 10 programming languages to learn in 2021. If you're a good C# programmer, you can get a 6-figure job in the U.S. easily. You can use C# for Windows programs, Web Programming, Mobile-Phone programming with Xamarin and even video games with Unity.

  • Nice to meet you! I found your blog on msn. You're so smart. I will add it to my favorites and read more of your posts whenever I have time. <a href="https://totolord.com/" target="_blank">먹튀사이트</a>

  • I definitely organized my thoughts through your post. Your writing is full of really reliable information and logical. Thank you for sharing such a wonderful post. <a href="https://toto-spin.com" target="_blank" class="postlink">스포츠토토사이트</a>

  • I finally found the information I was looking for on your blog. You can't be happier than this. I want to say thank you so much for posting this. Please continue to post good comments.

  • Son Heung-min has been suffering from a "controversy over ups and downs" for a while. Tottenham has steadily shown top-class performance in every round since the 2016-17 season, but criticism has

  • Many, including the British media "Football Fancast," argued that "Coach Antonio Conte should consider excluding Son Heung-min in the match against West Ham. Coach Conte criticized, saying, "It's crazy

  • Son Heung-min lived up to coach Conte's belief and ended the team's 3-1 complete victory with multiple goals in the match against West Ham in the 30th round of the 2021-22 season Premier League at

  • After the game, England's "Sky Sports" asked Yoris about Son Heung-min. I tied up with Harry Kane, the "best friend of the soul," and Yoris said, "No matter what coach comes, there is no change in performance.

  • He stressed that Tottenham players should learn and follow top-class performance. Lloris said, "It shows a very high level of performance. All Tottenham players should meet that level." In fact, Tottenham's

  • Meanwhile, Son Heung-min did not care much about praise or criticism. He ran silently for the team's performance without paying attention to external criticism. In an interview after the match against West Ham

  • "Other people's stories don't matter. If we go according to our plan, we can improve every game. I don't have time to think negative thoughts. If you are always positive, you will get good results."

  • Where to begin?
    The best place to start is with the main part of the text. The introduction and conclusion are easier to write afterwards, after you are sure that the basis of your essay is logical and understandable to the reader. If you have taken care of a detailed plan, you can write in order - it will be easy.
    There are also times when you are lazy, have no time or desire to write an essay. In this case, you can order it in our service. A few hours and it will be ready.


  • http://emc-mee.com/blog.html شركات نقل العفش
    اهم شركات كشف تسربات المياه بالدمام كذلك معرض اهم شركة مكافحة حشرات بالدمام والخبر والجبيل والخبر والاحساء والقطيف كذكل شركة تنظيف خزانات بجدة وتنظيف بجدة ومكافحة الحشرات بالخبر وكشف تسربات المياه بالجبيل والقطيف والخبر والدمام
    http://emc-mee.com/cleaning-company-yanbu.html شركة تنظيف بينبع
    http://emc-mee.com/blog.html شركة نقل عفش
    اهم شركات مكافحة حشرات بالخبر كذلك معرض اهم شركة مكافحة حشرات بالدمام والخبر والجبيل والخبر والاحساء والقطيف كذلك شركة رش حشرات بالدمام ومكافحة الحشرات بالخبر
    http://emc-mee.com/anti-insects-company-dammam.html شركة مكافحة حشرات بالدمام
    شركة تنظيف خزانات بجدة الجوهرة من افضل شركات تنظيف الخزانات بجدة حيث ان تنظيف خزانات بجدة يحتاج الى مهارة فى كيفية غسيل وتنظيف الخزانات الكبيرة والصغيرة بجدة على ايدى متخصصين فى تنظيف الخزانات بجدة
    http://emc-mee.com/tanks-cleaning-company-jeddah.html شركة تنظيف خزانات بجدة
    http://emc-mee.com/water-leaks-detection-isolate-company-dammam.html شركة كشف تسربات المياه بالدمام
    http://emc-mee.com/ شركة الفا لنقل عفش واثاث
    http://emc-mee.com/transfer-furniture-jeddah.html شركة نقل عفش بجدة
    http://emc-mee.com/transfer-furniture-almadina-almonawara.html شركة نقل عفش بالمدينة المنورة
    http://emc-mee.com/movers-in-riyadh-company.html شركة نقل اثاث بالرياض
    http://emc-mee.com/transfer-furniture-dammam.html شركة نقل عفش بالدمام
    http://emc-mee.com/transfer-furniture-taif.html شركة نقل عفش بالطائف
    http://emc-mee.com/transfer-furniture-mecca.html شركة نقل عفش بمكة
    http://emc-mee.com/transfer-furniture-yanbu.html شركة نقل عفش بينبع
    http://emc-mee.com/transfer-furniture-alkharj.html شركة نقل عفش بالخرج
    http://emc-mee.com/transfer-furniture-buraydah.html شركة نقل عفش ببريدة
    http://emc-mee.com/transfer-furniture-khamis-mushait.html شركة نقل عفش بخميس مشيط
    http://emc-mee.com/transfer-furniture-qassim.html شركة نقل عفش بالقصيم
    http://emc-mee.com/transfer-furniture-tabuk.html شركة نقل عفش بتبوك
    http://emc-mee.com/transfer-furniture-abha.html شركة نقل عفش بابها
    http://emc-mee.com/transfer-furniture-najran.html شركة نقل عفش بنجران
    http://emc-mee.com/transfer-furniture-hail.html شركة نقل عفش بحائل
    http://emc-mee.com/transfer-furniture-dhahran.html شركة نقل عفش بالظهران
    http://emc-mee.com/transfer-furniture-kuwait.html شركة نقل عفش بالكويت
    http://emc-mee.com/price-transfer-furniture-in-khamis-mushit.html اسعار شركات نقل عفش بخميس مشيط
    http://emc-mee.com/numbers-company-transfer-furniture-in-khamis-mushit.html ارقام شركات نقل عفش بخميس مشيط
    http://emc-mee.com/new-company-transfer-furniture-in-khamis-mushit.html شركة نقل عفش بخميس مشيط جديدة
    http://emc-mee.com/transfer-furniture-from-khamis-to-riyadh.html شركة نقل عفش من خميس مشيط الي الرياض
    http://emc-mee.com/transfer-furniture-from-khamis-mushait-to-mecca.html شركة نقل عفش من خميس مشيط الي مكة
    http://emc-mee.com/transfer-furniture-from-khamis-mushait-to-jeddah.html شركة نقل عفش من خميس مشيط الي جدة
    http://emc-mee.com/transfer-furniture-from-khamis-mushait-to-medina.html شركة نقل عفش من خميس مشيط الي المدينة المنورة
    http://emc-mee.com/best-10-company-transfer-furniture-khamis-mushait.html افضل 10 شركات نقل عفش بخميس مشيط

  • https://ataralmadinah662300791.wordpress.com/شركة الصقر الدولي لنقل العفش والاثاث وخدمات التنظيف المنزلية

    https://ataralmadinah662300791.wordpress.com/شركة الصقر الدولي لنقل العفش والاثاث وخدمات التنظيف المنزلية

    https://ataralmadinah662300791.wordpress.com/شركة الصقر الدولي لنقل العفش والاثاث وخدمات التنظيف المنزلية

  • شركة سكاي لخدمات نقل العفش والاثاث بالمنطقة العربية السعودية نحن نوفر خدمات نقل اثاث بالرياض ونقل عفش بالمدينة المنورة ونقل عفش بمكة ونقل عفش بالطائف نحن نقدم افضل نقل اثاث بخميس مشيط ونقل عفش بجدة

    http://treeads.net/ شركة سكاي نقل العفش
    http://treeads.net/blog.html مدونة لنقل العفش
    http://treeads.net/movers-mecca.html شركة نقل عفش بمكة
    http://treeads.net/movers-riyadh-company.html شركة نقل عفش بالرياض
    http://treeads.net/all-movers-madina.html شركة نقل عفش بالمدينة المنورة
    http://treeads.net/movers-jeddah-company.html شركة نقل عفش بجدة
    http://treeads.net/movers-taif.html شركة نقل عفش بالطائف
    http://treeads.net/movers-dammam-company.html شركة نقل عفش بالدمام
    http://treeads.net/movers-qatif.html شركة نقل عفش بالقطيف
    http://treeads.net/movers-jubail.html شركة نقل عفش بالجبيل
    http://treeads.net/movers-khobar.html شركة نقل عفش بالخبر
    http://treeads.net/movers-ahsa.html شركة نقل عفش بالاحساء
    http://treeads.net/movers-kharj.html شركة نقل عفش بالخرج
    http://treeads.net/movers-khamis-mushait.html شركة نقل عفش بخميس مشيط
    http://treeads.net/movers-abha.html شركة نقل عفش بابها
    http://treeads.net/movers-qassim.html شركة نقل عفش بالقصيم
    http://treeads.net/movers-yanbu.html شركة نقل عفش بينبع
    http://treeads.net/movers-najran.html شركة نقل عفش بنجران
    http://treeads.net/movers-hail.html شركة نقل عفش بحائل
    http://treeads.net/movers-buraydah.html شركة نقل عفش ببريدة
    http://treeads.net/movers-tabuk.html شركة نقل عفش بتبوك
    http://treeads.net/movers-dhahran.html شركة نقل عفش بالظهران
    http://treeads.net/movers-rabigh.html شركة نقل عفش برابغ
    http://treeads.net/movers-baaha.html شركة نقل عفش بالباحه
    http://treeads.net/movers-asseer.html شركة نقل عفش بعسير
    http://treeads.net/movers-mgmaa.html شركة نقل عفش بالمجمعة
    http://treeads.net/movers-sharora.html شركة نقل عفش بشرورة
    http://treeads.net/how-movers-furniture-yanbu.html كيفية نقل العفش بينبع

  • شركة مكافحة حشرات بينبع وكذلك شركة كشف تسربات المياه بينبع وتنظيف خزانات وتنظيف الموكيت والسجاد والكنب والشقق والمنازل بينبع وتنظيف الخزانات بينبع وتنظيف المساجد بينبع شركة تنظيف بينبع تنظيف المسابح بينبع
    http://jumperads.com/yanbu/anti-insects-company-yanbu.html شركة مكافحة حشرات بينبع
    http://jumperads.com/yanbu/water-leaks-detection-company-yanbu.html شركة كشف تسربات بينبع
    http://jumperads.com/yanbu/yanbu-company-surfaces.html شركة عزل اسطح بينبع
    http://jumperads.com/yanbu/yanbu-company-sewage.html شركة تسليك مجاري بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-sofa.html شركة تنظيف كنب بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-mosques.html شركة تنظيف مساجد بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-Carpet.html شركة تنظيف سجاد بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-tanks.html شركة تنظيف خزانات بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-swimming-bath.html شركة تنظيف وصيانة مسابح بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-Furniture.html شركة تنظيف الاثاث بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-home.html شركة تنظيف شقق بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-Carpets.html شركة تنظيف موكيت بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company.html شركة تنظيف مجالس بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-house.html شركة تنظيف منازل بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-Villas.html شركة تنظيف فلل بينبع
    http://jumperads.com/yanbu/yanbu-cleaning-company-curtains.html شركة تنظيف ستائر بينبع
    http://jumperads.com/yanbu/yanbu-company-tile.html شركة جلي بلاط بينبع

    http://jumperads.com/transfer-furniture-hafr-albatin.html نقل عفش بحفر الباطن
    http://jumperads.com/price-transfer-furniture-mecca.html اسعار شركات نقل العفش بمكة
    http://jumperads.com/transfer-furniture-mecca-2017.html نقل اثاث بمكة 2017
    http://jumperads.com/how-transfer-furniture-mecca.html كيفية نقل العفش بمكة
    http://jumperads.com/all-company-transfer-furniture-mecca.html اهم شركات نقل العفش بمكة
    http://jumperads.com/best-company-transfer-furniture-mecca.html افضل شركة نقل عفش بمكة
    http://jumperads.com/price-transfer-furniture-jeddah.html اسعار شركات نقل العفش بجدة
    http://jumperads.com/transfer-furniture-jeddah-2017.html نقل اثاث بجدة 2017
    http://jumperads.com/how-transfer-furniture-jeddah.html كيفية نقل العفش بجدة
    http://jumperads.com/all-company-transfer-furniture-jeddah.html اهم شركات نقل العفش بجدة

  • http://www.domyate.com/2019/08/27/transfer-furniture-north-riyadh/ نقل عفش شمال الرياض
    http://www.domyate.com/2019/09/05/movers-company-khamis-mushait/ شركات نقل عفش بخميس مشيط
    http://www.domyate.com/2019/09/05/10-company-transfer-furniture-khamis-mushait/ شركة نقل العفش بخميس مشيط
    http://www.domyate.com/2019/09/05/all-transfer-furniture-khamis-mushait/ شركات نقل اثاث بخميس مشيط
    http://www.domyate.com/2019/09/05/best-company-transfer-furniture-khamis-mushit/ افضل شركات نقل اثاث بخميس مشيط
    http://www.domyate.com/2019/09/05/company-transfer-furniture-khamis-mushit/ شركات نقل اثاث بخميس مشيط
    http://www.domyate.com/category/%D9%86%D9%82%D9%84-%D8%B9%D9%81%D8%B4-%D8%AC%D8%AF%D8%A9/ نقل عفش جدة
    http://www.domyate.com/2019/09/25/movers-furniture-from-jeddah-to-jordan/ نقل عفش من جدة الي الاردن
    http://www.domyate.com/2019/10/03/price-cleaning-tanks-in-jeddah/ اسعار شركات تنظيف خزانات بجدة
    http://www.domyate.com/2019/09/25/movers-furniture-from-jeddah-to-egypt/ نقل عفش من جدة الي مصر
    http://www.domyate.com/2019/09/24/movers-furniture-from-jeddah-to-lebanon/ نقل عفش من جدة الي لبنان
    http://www.domyate.com/2019/09/22/%d8%a3%d9%86%d8%ac%d8%ad-%d8%b4%d8%b1%d9%83%d8%a7%d8%aa-%d9%86%d9%82%d9%84-%d8%a7%d8%ab%d8%a7%d8%ab-%d8%a8%d8%ac%d8%af%d8%a9/ شركات نقل اثاث بجدة
    http://www.domyate.com/2019/09/22/best-company-movers-jeddah/ افضل شركات نقل اثاث جدة
    http://www.domyate.com/2019/09/22/company-transfer-furniture-yanbu/ شركات نقل العفش بينبع
    http://www.domyate.com/2019/09/21/taif-transfer-furniture-company/ شركة نقل عفش في الطائف
    http://www.domyate.com/2019/09/21/%d8%b4%d8%b1%d9%83%d8%a7%d8%aa-%d9%86%d9%82%d9%84-%d8%a7%d9%84%d8%b9%d9%81%d8%b4/ شركات نقل العفش
    http://www.domyate.com/2019/09/21/%d8%b7%d8%b1%d9%82-%d9%86%d9%82%d9%84-%d8%a7%d9%84%d8%b9%d9%81%d8%b4/ طرق نقل العفش
    http://www.domyate.com/2019/09/20/%d8%ae%d8%b7%d9%88%d8%a7%d8%aa-%d9%86%d9%82%d9%84-%d8%a7%d9%84%d8%b9%d9%81%d8%b4-%d9%88%d8%a7%d9%84%d8%a7%d8%ab%d8%a7%d8%ab/ خطوات نقل العفش والاثاث
    http://www.domyate.com/2019/09/20/best-10-company-transfer-furniture/ افضل 10 شركات نقل عفش
    http://www.domyate.com/2019/09/20/%d9%83%d9%8a%d9%81-%d9%8a%d8%aa%d9%85-%d8%a7%d8%ae%d8%aa%d9%8a%d8%a7%d8%b1-%d8%b4%d8%b1%d9%83%d8%a7%d8%aa-%d9%86%d9%82%d9%84-%d8%a7%d9%84%d8%b9%d9%81%d8%b4-%d9%88%d8%a7%d9%84%d8%a7%d8%ab%d8%a7%d8%ab/ اختيار شركات نقل العفش والاثاث
    http://www.domyate.com/2019/09/20/cleaning-company-house-taif/ شركة تنظيف منازل بالطائف
    http://www.domyate.com/2019/09/20/company-cleaning-home-in-taif/ شركة تنظيف شقق بالطائف
    http://www.domyate.com/2019/09/20/taif-cleaning-company-villas/ شركة تنظيف فلل بالطائف
    http://www.domyate.com/ شركة نقل عفش
    http://www.domyate.com/2017/09/21/%D9%86%D9%82%D9%84-%D8%A7%D9%84%D8%B9%D9%81%D8%B4-%D9%88%D8%A7%D9%84%D8%AA%D8%AE%D8%B2%D9%8A%D9%86/ نقل العفش والتخزين
    http://www.domyate.com/2016/07/02/transfer-furniture-dammam شركة نقل عفش بالدمام
    http://www.domyate.com/2015/11/12/%D8%B4%D8%B1%D9%83%D8%A9-%D9%86%D9%82%D9%84-%D8%B9%D9%81%D8%B4-%D8%A8%D8%A7%D9%84%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%A7%D9%84%D9%85%D9%86%D9%88%D8%B1%D8%A9/ شركة نقل عفش بالمدينة المنورة
    http://www.domyate.com/2016/06/05/transfer-furniture-jeddah/ شركة نقل عفش بجدة

  • https://sites.google.com/view/movers-riyadh/

  • Thank you so much for sharing this information, this will surely help me in my work and therefore, I would like to tell you that very few people can write in a manner where the reader understands just by reading the article once. Thank you. <a href="https://totoguy.com/" target="_blank">먹튀검증</a>

  • I've seen countless posts on topics similar to this one, but I haven't been able to find an article as neatly organized as yours. Your article will be of great help to the article I want to write. I am attaching the address of the article I am writing to the link below.

  • I've seen countless posts on topics similar to this one, but I haven't been able to find an article as neatly organized as yours. Your article will be of great help to the article I want to write. I am attaching the address of the article I am writing to the link below.
    <a href="https://totoright.com/" target="_blank" class="postlink">사설토토</a>

  • Learning is the cycle which I think never be finished on the grounds that in each phase of life an individual have ready to learn new things, change and execute to his life.





  • dgdgdg dbdgdg

  • کروم ناخن در واقع یه نوع پودره که ظاهری درخشان و آینه ایی رو به ناخن های شما میدهد. در ابتدای کار ناخن هاتون رو مانیکور کنید، به شکلی که اندازه و شکل ناخونتون مشخص باشه تا نیازی به کوتاه کردن و سوهان کشیدن دوباره نداشته باشه. در ادامه این مطلب با آموزش استفاده از کروم ناخن از صفر تا صد و آشنایی با وسایل مورد نیاز آن با گلارا همراه باشید.

  • اسرع وارخص نقل اثاث في دبي شركة بي بي سي لخدمات نقل وتغليف وتخزين الاثاث توفر لكم أفضل الخدمات
    بأقل الاسعار تحت إشراف فريق خبير ومحترف في نقل الاثاث
    <a href="https://www.bbcmover.com/%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9/">شركة نقل اثاث دبي</a>
    <a href="https://www.bbcmover.com/%d9%86%d9%82%d9%84-%d8%a7%d8%ab%d8%a7%d8%ab-%d8%af%d8%a8%d9%8a/"> نقل اثاث دبي</a>
    <a href="https://www.bbcmover.com/%d9%86%d9%82%d9%84-%d8%a7%d8%ab%d8%a7%d8%ab-%d8%a7%d9%84%d8%b4%d8%a7%d8%b1%d9%82%d8%a9-2/">نقل اثاث الشارقة</a>
    <a href="https://www.bbcmover.com/%d9%86%d9%82%d9%84-%d8%a7%d8%ab%d8%a7%d8%ab-%d8%a7%d8%a8%d9%88%d8%b8%d8%a8%d9%8a/">نقل اثاث ابوظبي</a>
    <a href="https://www.bbcmover.com/%d9%86%d9%82%d9%84-%d8%a7%d8%ab%d8%a7%d8%ab-%d8%a7%d9%84%d8%b9%d9%8a%d9%86/">نقل اثاث العين</a>
    <a href="https://www.bbcmover.com/%d9%86%d9%82%d9%84-%d8%a7%d8%ab%d8%a7%d8%ab-%d8%a7%d9%84%d9%81%d8%ac%d9%8a%d8%b1%d8%a9/">نقل اثاث الفجيرة</a>

  • بازی های کامپیوتری جدید 2022 برای دوستداران گیم کالاف دیوتی وارکراف خرید گیم تایم ارزان قیمت 60 روزه بهمراه انواع بازی های مهیج در جت گیم

  • اگر قصد خرید قهوه فرانسوی را دارید. پیشنهاد ما به شما فروشگاه اینترنتی قهوه موریس می باشد. زیرا در کمترین زمان و با مناسب ترین قیمت می توانید سفارش خود را ثبت کنید و
    در سریع ترین زمان ممکن درب منزل تحویل بگیرید. اگر در خرید انواع قهوه فرانسه دچار تردید شدید یا انتخاب قهوه برایتان سخت بود قبل از ثبت سفارش با ما مشورت کنید

  • Call of DutyUltimate Edition کاملا اوریجینال
    کیفیت تضمین شده
    به تازگی بازی Call of Duty: Vanguard که توسط استودیو Sledgehammer توسعه یافته است، با انتشار یک تریلر معرفی شد و همچنین در مراسم گیمزکام شاهد نشر یک کلیپ ویدیو ۱۰ دقیقه‌ای با محوریت قسمت داستانی آن بودیم. در این کلیپ ویدیو می‌توانیم آغاز روند داستان کاراکتر پالینا با بازی لارا بیلی را که براساس کاراکتری واقعی به نام لیودمیلا پاولیچنکو خلق شده به تماشا بنشینیم . این کلیپ ویدیو با به تصویر کشیدن قسمت آغازین روند داستانی این شخصیت ویژگی‌های جدید گان ‌پلی و بعضی محیط ‌های این بازی را نشان می‌دهد.

  • دوست داران بازی های آنلاین بشتابید انواع بازی های مهیج نظیر وارکراف دیابلو کالاف دیوتی انواع نسخه ها و خرید گیم تایم 60 روزه ارزان قیمت تحویل فوری

  • خرید گیم تایم 60 روزه برای بازی وارکراف و ارسال سریع کد محصول یرای دوستداران بازی های انلاین و همچنین انواع بازی های مهیج نظیر کالاف دیوتی ونگارد و سایر نسخه ها و دیابلو ، اورواچ و دیگر بازی های مهیج

  • Tanks For Sharing Article, Good Job

  • your blog posts are beautiful and so eloquent! I love hearing about what the team has been up to and the great experiences that you all have had.

  • I love it

  • 60 days game time is currently the only game time provided by blizzard for gamers, Word of Warcraft. In the past, there were games like 30-day and 180-day, but due to the new policies of this company and the policy that it has considered, the only game time that can be provided for dear gamers is Game Time 60. Is fasting. In the following, we have collected interesting explanations about game time for you, which are worth reading.

    Two months gametime application

    Currently, 2 months gametime is used in all areas of world of warcraft. But if you want to experience a series of exciting and new experiences, you have to buy this game time. These experiences include:
    Use new expansions
    Play in new maps
    Roll up in a new style
    Change in the shape of the game

  • 60 days game time is currently the only game time provided by blizzard for gamers, Word of Warcraft. In the past, there were games like 30-day and 180-day, but due to the new policies of this company and the policy that it has considered, the only game time that can be provided for dear gamers is Game Time 60. Is fasting. In the following, we have collected interesting explanations about game time for you, which are worth reading.

    Two months gametime application

    Currently, 2 months gametime is used in all areas of world of warcraft. But if you want to experience a series of exciting and new experiences, you have to buy this game time. These experiences include:
    Use new expansions
    Play in new maps
    Roll up in a new style
    Change in the shape of the game

  • امروزه خرید لاک ژل برای زیبایی دستان در بین بانوان از اهمیت زیادی برخورداره. لاک ژل رو میشه روی ناخن طبیعی و کاشته شده زد و برای خشک کردنش از دستگاه لاک خشک کن یو وی / ال ای دی استفاده کرد

  •  خرید گیم تایم 60 روزه: بدون شک همه ی دوستداران بازی های آنلاین چندین سال است که با نام بازی  ورلد آف وارکرافت آشنا هستند ، بازی

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

  • جت گیم جت گیم فروشگاه جت گیم بازی های آنلاین بازی های آنلاین بشتااااااااااااااااااااااااابید
    دوسسسسسسسسسسسسسسسسسسسسسسسسسسسسستداران گیم
    گیم پلی

  • Thank you for sharing valuable information. This is a new type of writing that cannot be seen anywhere else. That's why I favorite your blog. There are many articles on my blog that you might be interested in. Come and check

  • There are cross-verification information on the topic you wrote on my blog. I'm sure my posts will help you. I want to share more about this topic with you. If you don't mind, why don't we keep in touch? 

  • To all of those whining about having to "learn more" to keep up as a productive and senior engineer:
    Get over it!!

    Did you really think that the only skills that you will ever need you already knew when you were hired?
    Should technology freeze in time for each developer so that they do not have to ever learn anything again?

    All high-intelligence careers require constant education: Doctors, Lawyers, Engineers...

    Do you really believe that "everything I ever needed to know I learned in kindergarten"?

    If you do not want to have to learn new skills, then choose another career or just take temp gigs babysitting old code that either can't or won't be upgraded.
    Leave the dev of new stuff to the rest of us.

  • Hey, I simply hopped over in your web page by means of StumbleUpon. Not one thing I might in most cases learn, however I favored your feelings none the less. Thank you for making something price reading. 메이저토토사이트

  • برخی از بازی های  شرکت بلیزارد بصورت رایگان دردسترس گیمرها و کاربران نخواهد بود. و این کاربران برای استفاده از بازی  گیم تایم یا همان گیم کارت خریداری کنند. یکی از این بازی ها،‌ بازی محبوب و پرطرفدار ورلدآف وارکرافت است. به شارژ ماهیانه بازی وارکرافت در سرورهای بازی بلیزارد  گیم تایم می گویند ، که در فروشگاه جت گیم موجود می باشد.

    خرید گیم تایم 60 روزه ازفروشگاه جت گیم:

    در واقع گیم تایم 60 روزه نمونه ای جدید است از گیم تایم ها برای استفاده دربازی World of Warcraft  . که در ادامه بیشتر در مورد این محصول و نحوه استفاده از آن توضیح می دهیم .

    شما با خرید گیم تایم 60 روزه در مدت زمان آن گیم تایم ( 60 روز ) به امکاناتی در بازی World of Warcraft درسترسی پیدا خواهید کرد که این امکانات شامل موارد زیر میباشند :

    1 - اجازه لول آپ کردن تا لول 50 ( بدون گیم تایم فقط می توانید تا لول 20 بازی کنید )

    2 - اجازه  چت کردن با دیگران درون بازی ( بدون گیم تایم نمی توانید در بازی  چت کنید )

    3 - دسترسی به بازی World of Warcraft Classic

  • خرید گیم تایم 60 روزه از جت گیم

    اگر به دنبال این هستید که یک گیم تایم 60 روزه را خریداری کنید برای بازی world of warcraft خود می توانید به فروشگاه جت گیم مراجعه کنید. یکی از ویژگی های این فروشگاه آنی بودن آن است. پس از پرداخت قیمت کد محصول به شما در سریع ترین مدت زمان تحویل داده می شود. در حال حاضر مزیت فروشگاه جت گیم همین است که نسبت به فروشگاه های دیگر سریع تر است. و با کادری مجرب و با پشتیبانی محصولات ارائه شده به کاربران با مناسب ترین قیمت در حال فعالیت می باشد.

    بهترین راه برای اکتیو کردن گیم تایم 60 روزه
    راحت ترین راه و بهترین راه برای فعال کردن گیم تایم ارائه به کلاینت بتل نت است. بعد از اینکه شما گیم تایم 60 روزه را از جت گیم خریداری کنید به شما یک کد ارسال می شود. شما باید این کد را در کلاینت بتل نت بخش Rededm a Code وارد کنید تا گیم تایم 60 روزه برای شما فعال شود. اما راه دیگر شما برای اکتیو کردن گیم تایم مراجعه به سایت بتل نت است.

    ارتباط گیم تایم به شدولند
    از همان روز اولی که شدولند به دنیای world of warcraft آمد گیم تایم نیز ارائه شد. می توان گفت که اصلی ترین هدف ارتباط گیم تایم به شدولند جلوگیری از چیت زدن است. چرا که برای اینکه شما بتوانید گیم تایم را بازی کنید باید هزینه زیادی را پرداخت کنید. از طرفی دیگر قوی کردن سرور ها است. بعد از به وجود آمدن سرور های گیم تایم سرور های بازی خود وارکرافت نیز قوی تر شده است.

    سخن آخر خرید گیم تایم 60 روزه
    جمع بندی که می توان از این مطلب داشته باشیم این است که شما می توانید برای خرید گیم تایم 60 روزه از فروشگاه جت گیم آن را خریداری کنید. گیم تایم 60 روزه دارای سرور اروپا و آمریکا است که بهتر است سرور گیم تایم شما با شدولند شما یکی باشد تا از لحاظ پینگی مشکلی را به وجود نیاورد. امیدوارم مطالب برای علاقمندان این گیم جذاب مفید قرار گرفته باشه با تشکر.

  • Buy 60-day game time from Jet Game

    If you are looking to buy a 60-day game time for your world of warcraft game, you can visit the Jet Game store. One of the features of this store is that it is instantaneous. After paying the price, the product code will be delivered to you as soon as possible. At the moment, the advantage of Jet Game Store is that it is faster than other stores. And is working with experienced staff and with the support of products offered to users at the most appropriate prices.

    The best way to activate 60-day game time
    The easiest and best way to enable gametime is to submit to a BattleNet client. A code will be sent to you after you purchase 60 days of game time from Jet Game. You must enter this code in the Battle Net client of the Rededm a Code section to activate the 60-day gametime for you. But your other way to activate game time is to visit the Battle.net site.

    GameTime connection to Shodoland
    GameTime was introduced from the first day Shudland came into the world of warcraft. It can be said that the main purpose of GameTime's connection to Shodland is to prevent chatting. Because you have to pay a lot of money to be able to play game time. On the other hand, it is strengthening the servers. After the advent of gametime servers, Warcraft's game servers have also become more powerful

  • 60 days game time is currently the only game time provided by blizzard for gamers, Word of Warcraft. In the past, there were games like 30-day and 180-day, but due to the new policies of this company and the policy that it has considered, the only game time that is currently possible for dear gamers is Game Time 60. Is fasting. In the following, we have collected interesting explanations about game time for you, which are worth reading.

    Two months gametime application

    Currently, 2 months gametime is used in all areas of world of warcraft. But if you want to experience a series of exciting and new experiences, you have to buy this game time. These experiences include:
    Use new expansions
    Play in new maps
    Roll up in a new style
    Change in the shape of the game
    Prepared from the site of Jet Game

  • Some Blizzard games will not be available to gamers and users for free. And these users to buy game time or the same game card. One of these games is محب the popular World of Warcraft game. The monthly charge of Warcraft game on Blizzard Game Time game servers, which is available in the Jet Game store.

    Buy 60-day game time from Jet Game store:

    In fact, 60-day game time is a new example of game time for use in World of Warcraft. In the following, we will explain more about this product and how to use it.

    By purchasing 60-day game time during that game time (60 days), you will get access to features in World of Warcraft, which include the following:

    1 - Allow to roll up to level 50 (without game time you can only play up to level 20)

    2 - Allow to chat with others in the game (without game time you can not chat in the game)

    3 - Access to the game World of Warcraft Classic

  • Thank you for sharing information …

  • With 1:50 left in Game 7, LeBron James blocked Andre Iguodala's swift attack with a block. It is still considered one of the best scenes. Third place was the Boston Celtics and LA Lakers' final in 1969, and

  • The 1998 final between the Chicago Bulls and the Utah Jazz, led by Michael Jordan, was ranked seventh. In particular, Michael Jordan, who was trailing until the end of Game 6, stole Carl Malone's ball and

  • In addition, the 1993 final between the Chicago Bulls and the Phoenix Suns ranked 10th. It is a series that drew attention from all over the world with a showdown between Jordan and Phoenix ace

  • Curry was lauded by the head coach. The Golden State Warriors won 107-88 in the second leg of the 2022 NBA playoffs against the Boston Celtics at the Chase Center in San Francisco on the 6th. Golden State

  • The player at the center was also ace Stephen Curry. Curry, who suffered a defeat even after hitting 34 points in the first round, scored 29 points in the second round and became the team's top

  • Curry exploded properly in the third quarter when the team was on the flow. In the third quarter alone, he scored 14 points, including four 3-pointers. In particular, when the team was blocking Boston's

  • Curry also showed good performance in defense as well as offense. Curry, who has been criticized for his weakness in defense due to physical conditions, is steadily developing in terms of defense.

  • The head coach also responded to the ace's performance every day. In an interview after the match, coach Steve Kerr expressed his joy by praising Curry's performance. "Stephen Curry was breathtakingly

  • Curry was very good and just keeps playing his game. He is constantly undervalued in terms of physical strength and defense," he said. Draymond Green also said, "Curry was incredibly good. What's

  • Curry said of his improved defense, "I've always tried to be good at defense. If you try, good things will happen," he said. As a result of the day, the two teams tied the series 1-1. Can Curry win the team in

  • محبوبیت گیم تایم دو ماهه:
    همان طور که در بالا ذکر شد گیم تایم 60 روزه چند ماهی است که نسبت به گیم تایم های دیگر به محبوبیت رسیده است. این به این علت است که هم دارای زمان مناسبی است و هم قیمت مناسبی. علتی که پلیر های world of warcraft از این نوع گیم تایم استفاده می کنند مدت زمان است. چرا که گیم تایم 60 روزه یک گیم تایم متوسط است و بیشتر افراد از روز های این گیم تایم استفاده می کنند. یک مزیتی که این گیم تایم نسبت به گیم تایم های دیگر دارد همین مدت زمانش است.

    انواع ریجن های game time
    به صورت کلی گیم تایم دو ماهه ساخته شده از 2 ریجن اروپا و آمریکا است. اما یک بحث مهمی که وجود دارد این است که توصیه می شود ریجنی از گیم تایم را تهیه کنید که با ریجن شدولند شما همخوانی داشته باشد. اگر به دنبال توصیه ما هستید به شما توصیه می کنیم که ریجن اروپا را خریداری کنید. چرا که به سرور های Middle east نزدیک است و معمولا شما پینگ بهتری را دریافت می کنید.

  • The Kia Sportage 2018 rental is a good-value SUV, spacious and comfortable enough for family trips. There is a big trunk and plenty of space in the back seats, which are reclining and provide extra comfort on long rides. You can easily fit everyone’s luggage in the trunk of the car.

  • Some Blizzard games will not be available to gamers and users for free. And these users to buy game time or the same game card. One of these games is محب the popular World of Warcraft game. The monthly charge of Warcraft game on Blizzard Game Time game servers, which is available in the Jet Game store.

    Buy 60-day game time from Jet Game store:

    In fact, 60-day game time is a new example of game time for use in World of Warcraft. In the following, we will explain more about this product and how to use it.

    By purchasing 60 days of game time during that game time (60 days), you will have access to features in World of Warcraft, which include the following:

    1 - Permission to roll up to level 50 (without game time you can only play up to level 20)

    2 - Permission to chat with others in the game (without game time you can not chat in the game)

    3 - Access to the game World of Warcraft Classic

Add a Comment

As it will appear on the website

Not displayed

Your website