Does the C# compiler optimize foreach blocks when its contents have the Conditional attribute?

Error processing SSI file


  1. Jagger

    • 2021/2/9

    That foreach will not be wiped away.

    The compiled code will be something like:

    foreach (var item in aCollection)

    the collection will be enumerated anyway.

  2. Pierce

    • 2017/11/20

    Looking for online definition of C or what C stands for? C is listed in the World's largest and most authoritative dictionary database of abbreviations and 

  3. Beckett

    • 2018/11/6

    The "C" is like the captain in hockey. There will be anywhere from one to four captains on a team. A team is allowed five captains with only four speaking, hence the four stars on a jersey. If a player has one star in yellow, he is one of four captains. Peyton Manning has three stars because he is the speaking captain with the other captain being on defense.

  4. Bodie

    • 2017/4/27

    Acronym, Definition. C/NO, Carton Number. C/NO, Carrier-to-Noise power ratio. Copyright 1988-2018, All rights reserved.

  5. Howard

    • 2017/4/24

    You are not leveraging any compiler symbols here. Wrap it inside these:

    #if DEBUG
        // your code here

    Advantages of this approach:

    • readability is greatly decreased by the [Conditional] method attribute. It is not obvious on the invoking side that an invocation will not take place in the compiled code. Teams should refrain from that practice in favor of more explicit conditional compilation methods. Even commenting is not advisable because there's always that someone in large teams who forgets to comment stuff like this. The example above, instead, is easy to read (VS2010+ even shades the text when it is not part of the current build profile).
    • constructing collections might be very expensive (e.G. constructing 1000 items with data from a database). In those cases compiler symbols allow for easier and cleaner culling of the interested code, without leaving an empty loop or the construction of the collection.
  6. Grassi

    • 2020/7/15

    c is the speed of light in vacuum. A mechanical pencil has the density of 3 grams per cubic centimeter. The volume of the pencil is 15.8 cubic centimeters.

  7. Ameer

    • 2016/11/14

    What does C stand for? What does C mean? This page is about the various possible meanings of the acronym, abbreviation, shorthand or slang term: C.

  8. Alejandro

    • 2021/5/31

    The benefit amount in D.C., based on eligibility and wage information submitted to DOES, can range from $50 to $444 per week. Claimants can estimate their weekly benefit amount by visiting and clicking Estimate Your Benefits.

  9. Mitchell

    • 2015/1/15

    The C# compiler will not optimize away the enumeration because the act of enumerating over a collection may produce side effects:

    1. In the case of an array, the act of indexing into the array implies a side effect (and the C# compiler rewrites foreach loops over arrays into indexing loops).
    2. For other collections, the calls to GetEnumerator() and MoveNext() imply side effects.

    In both cases, the potential null dereference is a side effect.

    When invoking a [Conditional] method, only the method call and its formal arguments will be omitted from the compiled code. Note that even arguments with side effects would be omitted. However, no surrounding code would be omitted.

    My own tests show that even adding an explicit null check will not coax the C# compiler into optimizing away the enumeration, even for a simple array.

    Whether the JIT compiler optimizes away the enumeration code is another question. It might, if it can prove that the collection is always non-null and that there are no other meaningful side effects. The JIT might be sophisticated enough to do this for arrays; I wouldn't bet on it, though. If the added overhead concerns you, place the enumeration code within an #if region as @pid suggests.

  10. Diaz

    • 2017/7/15

    What does C OF A mean? This page is about the various possible meanings of the acronym, abbreviation, shorthand or slang term: C OF A.

  11. Joshua

    • 2016/6/5

    If x is of type C where C overloads operator->, x->y gets expanded to x.operator->->y. ^Meyers, Scott , “Implementing operator->* for Smart Pointers”, Dr. Dobb’s Journal, Aristeia. ^The parentheses are not necessary when taking the size of a value, only when taking the size of a type. However, they are usually used regardless.

  12. Carter

    • 2019/3/19

    Definition of c. in the dictionary. Meaning of c.. What does c. mean? The numerical value of c. in Chaldean Numerology is: 3.

  13. Edwards

    • 2018/2/26

    The use of face masks is required within the AJC. You may also reach the American Job Center by phone at (202) 724-7000. The call center cannot schedule in-person appointments. We offer a wide variety of on-line services and workshops to help you manage your resources and repare to re-join the workforce: Designed with DC Residents in Mind.

  14. River

    • 2020/6/1

    C/o definition: You write c / o before an address on an envelope when you are sending often for only a short time. c/o is an abbreviation for 'care of'.

  15. Vincenzo

    • 2018/10/22

    "Vitamin C is an essential component of connective tissue and plays a role in wound healing," says Dr. Mareiniss. Per the NIH, there is an abundance of research supporting that vitamin C can help keep cancer at bay. "Most case-control studies have found an inverse association between dietary

  16. Jared

    • 2015/3/20

    From the Duolingo French Dictionary: See the translation of c'était with audio pronunciation, conjugations, and related words.

  17. Ari

    • 2015/1/16

    From their website: cURL is the name of the project. The name is a play on 'Client for URLs', originally with URL spelled in uppercase to make it obvious it 

Comments are closed.

More Posts