Visual Studio IDE

Welcome to the Visual Studio UserVoice site. Let us know what you would like to see in future versions of the Visual Studio suite of products. This site is for suggestions and ideas. If you need to file a bug, you can visit our Developer Community website to get started. 

For suggestions for improvements to other developer products, see these sites:

To review the current UserVoice statuses and their definitions, please review our “What Does the Status of My Feedback Mean?” article.

We look forward to hearing from you!

- The Visual Studio Team
Terms of Service and Privacy Policy

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. repeat keyword

    working with loop. sometimes you need to repeat something again. in this case you have to reduce/increase the counter or use goto statement.

    i was thinking that using repeat keyword would be nice.

    foreach(var v in list)
    {
    // do something
    if(...)
    {
    repeat; // iterate and dont go for next element of list.
    }
    }

    4 votes
    Vote
    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      You have left! (?) (thinking…)
      2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
    • lazy

      I would like to see lazy properties in C#. This is a common pattern for me:

      public class MyClass
      {
      public string MyProperty
      {
      get
      {
      return _MyProperty.Value;
      }
      }

      private System.Lazy<string> _MyProperty = new System.Lazy<string>(() =>
      {
      return "Some string";
      });
      }

      This could be simplified with a keyword "lazy":

      public class MyClass
      {
      public lazy string MyProperty
      {
      get
      {
      return "Some string";
      }
      }
      }

      4 votes
      Vote
      Sign in
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        I agree to the terms of service
        Signed in as (Sign out)
        You have left! (?) (thinking…)
        0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
      • can we remove Tuple object item1 or item2 and puts our custom name

        its very hard to under stand every time in Tuple like item1 or item2 which one belong to which column or property, menas every time we need remember like on first string datatype is belong to name or id etc.
        if we can put our custom name for tuple object like we can do in generic list name , id , mobile number etc that we will we very helpfull to understand .

        4 votes
        Vote
        Sign in
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          I agree to the terms of service
          Signed in as (Sign out)
          You have left! (?) (thinking…)
          1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
        • Change keyword "interface" to "spec"

          As the word "interface" means a place for communication between two entities, a user interface to operate something or the means of connecting something to/with something else, I do not see a logical reason to call a specification or a list of methods and their parameters - an interface.

          Using "interface" as a keyword to define that list is confusing, especially to begginers. Please change it. Thank you.

          4 votes
          Vote
          Sign in
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            I agree to the terms of service
            Signed in as (Sign out)
            You have left! (?) (thinking…)
            0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
          • add someting select as target one instance of an object

            add someting like that:
            with(myPoint)
            {
            X=10;
            Y=10;
            }

            that is equivalent to
            myPoint.X=10;
            myPoint.Y=10;

            why wuld it be useful?
            insted of doing that:
            Graphics myGraphics= Graphics.FromImage(myImage);
            using (myGraphics)
            {
            myGraphics.DrawLine([...]);
            myGraphics.DrawLine([...]);
            myGraphics.DrawLine([...]);
            myGraphics.DrawRectangle([...]);
            }

            you can just do that:
            using(myGraphics)
            {
            with(myGraphics)
            {
            DrawLine([...]);
            DrawLine([...]);
            DrawLine([...]);
            DrawRectangle([...]);
            }
            }

            4 votes
            Vote
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              I agree to the terms of service
              Signed in as (Sign out)
              You have left! (?) (thinking…)
              0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
            • When you're implementing an interface, carry over the comments

              When I create an interface, and add comments to the method signatures, then implement the interface, the comments don't carry over

              4 votes
              Vote
              Sign in
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                I agree to the terms of service
                Signed in as (Sign out)
                You have left! (?) (thinking…)
                0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
              • new language

                Microsoft did (kind of timeline):
                1- Use native C++ with version 2, 4, 5, 6
                2- Develop an interopability standard: COM
                3- Created a Managed frameWork: .Net
                4- Created new languages based on .Net: C#, VB, etc.
                5- Created an extension to C++: C++/CX

                1- C++ syntax is awfull, complex and error prone
                2- COM is complex, error prone and using C++/ATL is son complex that no one really want to adhere to that. It was an easy mistake.
                3- .Net is slow. Can't create object on the stack. Has a garbage collection which make programmer life easy but make…

                4 votes
                Vote
                Sign in
                Check!
                (thinking…)
                Reset
                or sign in with
                • facebook
                • google
                  Password icon
                  I agree to the terms of service
                  Signed in as (Sign out)
                  You have left! (?) (thinking…)
                  1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                • Add private scope to non nested types to make them only accessbile in same namespace or child namespace

                  Assemblies addresses the physical separation of code while namespaces addresses the logical separation of code. Types can be scoped to assemblies via the internal keyword but they cannot be scoped to namespace. I propose that non-nested types can be declared private which would make them only accessible within same namespace or child namespaces (even across assemblies).

                  I have assemblies that contain multiple namespaces because the functionality is always deployed together. This helps me reduce the amount of assemblies which simplifies deployment, patching, speeds up builds, speeds up visual studio, allows ngen to inline etc. However, internal types are insufficient because…

                  4 votes
                  Vote
                  Sign in
                  Check!
                  (thinking…)
                  Reset
                  or sign in with
                  • facebook
                  • google
                    Password icon
                    I agree to the terms of service
                    Signed in as (Sign out)
                    You have left! (?) (thinking…)
                    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                  • Convert.ChangeType() should be able convert string/int into enums

                    Currently, when working with generic functions and Convert.ChangeType(), the code always must look something like this:

                    return (T)(typeof(T).IsEnum ? Enum.Parse(typeof(T), value, true) : Convert.ChangeType(value, typeof(T)));

                    This is awkward. People tend to forget to always go the extra step for enums.

                    For a discussion on this please refer to this forum thread:

                    https://social.msdn.microsoft.com/Forums/vstudio/en-US/7b0703fb-701a-412e-ba5a-dd878813cc2c/improvement-suggestion-convertchangetype-should-convert-stringint-into-enums?forum=netfxbcl

                    4 votes
                    Vote
                    Sign in
                    Check!
                    (thinking…)
                    Reset
                    or sign in with
                    • facebook
                    • google
                      Password icon
                      I agree to the terms of service
                      Signed in as (Sign out)
                      You have left! (?) (thinking…)
                      0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                    • Add a "self" keyword, similar to PHP's self:: keyword, for accessing static members.

                      In C# if you wish to unambiguously reference a static member locally you must specify the full type name, e.g.

                      class ContrivedName {
                      static void Foo() {
                      }

                      public ContrivedName() {
                      ContrivedName.Foo();
                      }
                      public static ContrivedName Clone(ContrivedName source) {
                      ContrivedName dolly = new ContribedName();
                      dolly.CopyFrom( source );
                      return dolly;
                      }
                      }

                      I find it strange I had to type out "ContrivedName" 3 times in that example. It means I will have to use the Refector-rename functionality should I rename the type to something else, it also makes it more difficult to copy+paste code or other kinds of source-level code reuse.

                      4 votes
                      Vote
                      Sign in
                      Check!
                      (thinking…)
                      Reset
                      or sign in with
                      • facebook
                      • google
                        Password icon
                        I agree to the terms of service
                        Signed in as (Sign out)
                        You have left! (?) (thinking…)
                        1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                      • Intellisense for c# conditional compilation symbols

                        When writing an #if in c# its hard to know what compilation symbols are defined. it would be great if intellisense could list the available ones.

                        4 votes
                        Vote
                        Sign in
                        Check!
                        (thinking…)
                        Reset
                        or sign in with
                        • facebook
                        • google
                          Password icon
                          I agree to the terms of service
                          Signed in as (Sign out)
                          You have left! (?) (thinking…)
                          0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                        • var null initialize

                          I write code like so:

                          string newFishName = null;

                          or

                          var newFishName = (string)null;

                          because I can't write

                          var newFishName = String.null;

                          yet I can write

                          var newFishName = String.Empty;

                          I know it's just a syntactic thing, but for consistency

                          var newFishName = String.null;

                          might look better?

                          4 votes
                          Vote
                          Sign in
                          Check!
                          (thinking…)
                          Reset
                          or sign in with
                          • facebook
                          • google
                            Password icon
                            I agree to the terms of service
                            Signed in as (Sign out)
                            You have left! (?) (thinking…)
                            2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                          • Support "interface" constraint in generics

                            A new constraint for generics allowing to limit the type parameter to an interface type only:

                            public class MyClass<T> : T, where T : interface
                            {
                            // ...
                            }

                            4 votes
                            Vote
                            Sign in
                            Check!
                            (thinking…)
                            Reset
                            or sign in with
                            • facebook
                            • google
                              Password icon
                              I agree to the terms of service
                              Signed in as (Sign out)
                              You have left! (?) (thinking…)
                              2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                            • Make using threads natural in C#

                              Threading needs to simplified further and made a natural part of the language. Instead of having to create a Task or Thread objects to run code on a new thread, could it not be simplified to something like:
                              MyMethod(args) on new thread;
                              or
                              MyMethod(args) on new thread new_thread_object;
                              or
                              MyMethod(args) on thread existing_thread_object;

                              Using the first option, you lose the thread object, but this could be handy running a process on a form to keep the form responsive.
                              Using the last option, we could use that to run a method on a form to update controls without have to jump…

                              4 votes
                              Vote
                              Sign in
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                I agree to the terms of service
                                Signed in as (Sign out)
                                You have left! (?) (thinking…)
                                1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                              • "IF(Min < x < Max)" instead of "IF(Min < x & x < Max & Min < Max)"

                                It makes the code more readable and clean.

                                Maybe there is a way to combine OR-statements too:
                                "IF(A | B == x)" instead of "IF (A == x | B == x)"

                                4 votes
                                Vote
                                Sign in
                                Check!
                                (thinking…)
                                Reset
                                or sign in with
                                • facebook
                                • google
                                  Password icon
                                  I agree to the terms of service
                                  Signed in as (Sign out)
                                  You have left! (?) (thinking…)
                                  0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                • Current Index in foreach loop

                                  Add current index in foreach loop. Current implementation is like

                                  int index;
                                  foreach (Object o in collection)
                                  {
                                  index = collection.indexOf(o);
                                  }

                                  Or we can have extension method or LINQ to get the current index in loop,

                                  Following implementation would be great

                                  foreach (Object o in collection, index)
                                  {
                                  var idx = this.index;
                                  }

                                  4 votes
                                  Vote
                                  Sign in
                                  Check!
                                  (thinking…)
                                  Reset
                                  or sign in with
                                  • facebook
                                  • google
                                    Password icon
                                    I agree to the terms of service
                                    Signed in as (Sign out)
                                    You have left! (?) (thinking…)
                                    2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                  • End of line xml comments

                                    So we could write compact comments for variables and still get the incredible advantage of intellisense tooltips.
                                    For example that would look like:

                                    int variable; /// <info>comment for variable</info>
                                    int anotherVariable; /// <info>comment for anotherVariable</info>
                                    int thirdVariable; /// <info>comment for thirdVariable</info>

                                    That would be so useful for long list of variables, and for enum members

                                    3 votes
                                    Vote
                                    Sign in
                                    Check!
                                    (thinking…)
                                    Reset
                                    or sign in with
                                    • facebook
                                    • google
                                      Password icon
                                      I agree to the terms of service
                                      Signed in as (Sign out)
                                      You have left! (?) (thinking…)
                                      0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                    • nameof for multiple members

                                      In c# 6
                                      string name = nameof(Property); // name = "Property"
                                      string[] names = { nameof(Property1), nameof(Property2), nameof(Property3), nameof(Property4) }; // names = Array of names
                                      I suggest to support the following syntax:
                                      string[] names = nameof(Property1, Property2, Property3, Property4); // names = Array of names

                                      3 votes
                                      Vote
                                      Sign in
                                      Check!
                                      (thinking…)
                                      Reset
                                      or sign in with
                                      • facebook
                                      • google
                                        Password icon
                                        I agree to the terms of service
                                        Signed in as (Sign out)
                                        You have left! (?) (thinking…)
                                        0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                      • Enabling intellisense creation of Concrete classes out of defined interfaces.

                                        Having an interface defined, have an option on the context menu when right-clicking on the interface definition name to create a class that implements the interface.

                                        3 votes
                                        Vote
                                        Sign in
                                        Check!
                                        (thinking…)
                                        Reset
                                        or sign in with
                                        • facebook
                                        • google
                                          Password icon
                                          I agree to the terms of service
                                          Signed in as (Sign out)
                                          You have left! (?) (thinking…)
                                          0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                        • TextBox1 For use with URL's improvements

                                          when another page is navigated to, the updating of the text in texbox1,

                                          3 votes
                                          Vote
                                          Sign in
                                          Check!
                                          (thinking…)
                                          Reset
                                          or sign in with
                                          • facebook
                                          • google
                                            Password icon
                                            I agree to the terms of service
                                            Signed in as (Sign out)
                                            You have left! (?) (thinking…)
                                            0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                          1 2 8 10 12 27 28
                                          • Don't see your idea?

                                          Feedback and Knowledge Base