Question: In MSDN, "For **reference types**, an explicit cast is required if you need to convert from a base type to a derived type". 

In wiki, "In programming language theory, a **reference type is a data type that refers to an object in memory**. A pointer type on the other hand refers to a memory address. Reference types can be thought of as pointers that are implicitly dereferenced." which is the case in C.

How to explain the memory storing procedure when considering explicit casting for reference type in C#?

Answer: 
First of all don't try to write all your code in a single statement. Its is easier to debug using multiple statements:

```
itemCode.setText((String)showItem.getValueAt(showItem.getSelectedRow(), 0));

```

Can easily be written as:

```
Object value = showItem.getValueAt(rowCount, 0);
itemCode.setText( value.toString() );

```

Note there is no need to invoke the getSelectedRow() method twice since you have a variable that contains that value.

Then you can always add some debug code like:

```
Object value = showItem.getValueAt(rowCount, 0);
System.out.println( value.getClass() );

```

to see what type of Object your table has in that cell.
Maybe you should check this.

[How do I convert from int to String?](https://stackoverflow.com/questions/4105331/how-do-i-convert-from-int-to-string)

for 

```
itemCode.setText((String)showItem.getValueAt(showItem.getSelectedRow(), 0));

```