| By Steven Mandel | Article Rating: |
|
| May 10, 2006 04:15 PM EDT | Reads: |
14,387 |
You might be wondering what this book is all about. As the author explains, the dictionary's definition of a gotcha is "an unexpected usually disconcerting challenge, revelation, or catch". Mr. Subramaniam defines the gotchas in his book as "those things that pop up unexpectedly when you're programming in .NET. … In this book I focus on the .NET framework and features that have consistently exhibited behavior that was not obvious to me." Mr. Subramaniam explains that the purpose of his book is not just to explain how to use a technology "but how to use it well and do things right". The book is intended for ".NET programmers in the trenches". He assumes that you are fairly familiar with .NET and all gotchas are presented in C# and VB.NET. The book is organized into 8 chapters focusing in on different areas of interest. Each topic in a chapter includes a discussion of the gotcha, code examples and possible solutions. There are also footnotes and a bibliography for further study of the topic.
The book contains fascinating discussions on a myriad of topics. Some of the topics discussed are Language API Gotchas, Visual Studio and Complier Gotchas as well as Inheritance and Polymorphism Gotchas If you do a lot of multithreading you will definitely want to read this chapter.
I would like to present a Gotcha that I have encountered that Mr. Subramaniam touches on in Gotcha #2: struct and classdiffer in behavior" and is discussed by Les Smith in his article located at www.knowdotnet.com/articles/boxedstructures.html. In .NET a class is treated as a reference type while a structure is treated as a value type. The gotcha occurs when you place a structure inside an arraylist. If you try to iterate through the arraylist to make changes to each structure, you will be surprised to find that the changes do not take effect. In my code below, I declare a structure and an arraylist. I add two entries to the arraylist and then iterate through the list to change the value of gamesPlayed.
Option Strict On
Public Structure Player
Public firstName As String
Public lastName As String
Public gamesPlayed As Integer
End Structure
Public Sub ArrayList_Structure
Dim myTeam As New ArrayList
Dim myPlayer As Player
Dim intCount As Integer
Dim intEnd As Integer
myPlayer.firstName = "Bob"
myPlayer.lastName = "Smith"
myPlayer.gamesPlayed = 0
myTeam.Add(myPlayer)
myPlayer.firstName = "Jane"
myPlayer.lastName = "Doe"
myPlayer.gamesPlayed = 0
myTeam.Add(myPlayer)
For Each myPlayer In myTeam
myPlayer.gamesPlayed += 1
Next
For Each myPlayer In myTeam
Response.Write( _
myPlayer.firstName _& " " _
& myPlayer.lastName _& " " _
& myPlayer.gamesPlayed.ToString _
& "<br/>")
Next
The results of this code are:
Bob Smith 0
Jane Doe 0
This is definitely not what you expected but is due to the fact that structures and arraylist are different types. To solve this problem you could do the following:
intCount = 0
intEnd = myTeam.Count - 1
While intCount <= intEnd
myPlayer = CType(myTeam(intCount), Player)
myPlayer.gamesPlayed += 1
myTeam(intCount) = myPlayer
intCount += 1
End While
For Each myPlayer In myTeam
Response.Write( _
myPlayer.firstName _& " " _
& myPlayer.lastName _& " " _
& myPlayer.gamesPlayed.ToString _
& "<br/>")
Next
End Sub
By converting the selected entry back into a structure you are now able to change it and then you can put it back into the arraylist with the following results.
Bob Smith 1
Jane Doe 1
.Net Gotchas is a very interesting book that covers a whole slew of topics. It is well worth reading especially if you have encountered the same gotchas and could not discover a way to solve them.
Published May 10, 2006 Reads 14,387
Copyright © 2006 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
About Steven Mandel
Steven Mandel has worked in the IT industry for over 15 years designing databases using Microsoft Access and SQL Server. He has developed Web and Windows applications using VB.NET and has written numerous articles and reviews about ASP.NET and VB.NET.
![]() |
Nmixer 01/24/08 07:15:51 PM EST | |||
Thank you for that, I was not sure exactly how an arraylist works and did not realize it can hold an array of objects like a structure. and reading your example made me relies that i could :) so thanks. anyways thanks |
||||
![]() |
Jackson123r 06/26/07 04:50:34 AM EDT | |||
I love the new iphone because it has cool things that it never has before in its daily life a wireless internet connection modulator |
||||
![]() |
.NET News Desk 05/10/06 04:31:53 PM EDT | |||
You might be wondering what this book is all about. As the author explains, the dictionary's definition of a gotcha is 'an unexpected usually disconcerting challenge, revelation, or catch'. Mr. Subramaniam defines the gotchas in his book as 'those things that pop up unexpectedly when you're programming in .NET. ? In this book I focus on the .NET framework and features that have consistently exhibited behavior that was not obvious to me.' Mr. Subramaniam explains that the purpose of his book is not just to explain how to use a technology 'but how to use it well and do things right'. The book is intended for '.NET programmers in the trenches'. He assumes that you are fairly familiar with .NET and all gotchas are presented in C# and VB.NET. |
||||
![]() |
Matt J. 05/04/06 01:52:48 PM EDT | |||
Having not seen the list of gotchas discussed, here's a simple one that got me: In VB, even though I set the default to Compare Text, functions like String.IndexOf() are still case sensitive! I understand why. I just don't like it! |
||||
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Ulitzer’s Amazing First 30 Days in Public Beta
- SYS-CON Announces Government IT Conference & Expo
- RIAs for Web 3.0 Using the Microsoft Platform
- "Government IT Expo" to Highlight Cloud Computing and SOA
- Building a Composite Application Using Multiple Web Services
- Amazon, Google, Microsoft - Big Three Cloud Providers Examined
- Will Ulitzer Dominate News Content on The Web? -Gartner
- Windows 7 To Launch Publicly May 5
- Cisco Needs to Buy EMC to Own VMware
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Ulitzer’s Amazing First 30 Days in Public Beta
- SYS-CON Announces Government IT Conference & Expo
- RIAs for Web 3.0 Using the Microsoft Platform
- How Did We Get to Windows 7?
- "Government IT Expo" to Highlight Cloud Computing and SOA
- Building a Composite Application Using Multiple Web Services
- Amazon, Google, Microsoft - Big Three Cloud Providers Examined
- Will Ulitzer Dominate News Content on The Web? -Gartner
- Windows 7 To Launch Publicly May 5
- Google Maps and ASP.NET
- Crystal Reports XI & How It Has Changed
- Creating Controls for.NET Compact Framework in Visual Studio 2005
- Converting VB6 to VB.NET, Part I
- How to Write High-Performance C# Code
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Implementing Tab Navigation with ASP.NET 2.0
- i-Technology Photo Exclusive: Bill Gates & Steve Jobs In "Nerds"
- .NET Archives: Getting Reacquainted with the Father of C#
- i-Technology Viewpoint: "SOA Sucks"





































