TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
richard payne
NA
9
0
C#, Generic, VS2008: Generic, class type, Byte Array
Dec 6 2011 7:53 AM
Sorry for deleting the previous thread by mistake, it was acceptable answer. I would like to thank for that.
I have other issue related to this
I have class which contains the byte array to store discrete hex data.....
#region//==================================================DataFrameGenericClass
public class DataFrameGenericClass
{
private UInt16 m_Page;
private Byte[] m_LIN_Array_Message1; // 7 byte Data + ID + CRC = 9 Byte Total
private Byte[] m_LIN_Array_Message2; // 7 byte Data + ID + CRC = 9 Byte Total
public DataFrameGenericClass(UInt16 Page)
{
this.m_Page = Page;
this.m_LIN_Array_Message1 = new Byte[9];
this.m_LIN_Array_Message2 = new Byte[9];
}
public UInt16 Page { get { return m_Page; } set { m_Page = value; } }
public Byte[] LIN_Array_Message1 { get { return m_LIN_Array_Message1; } set { m_LIN_Array_Message1 = value; } }
public Byte[] LIN_Array_Message2 { get { return m_LIN_Array_Message2; } set { m_LIN_Array_Message2 = value; } }
}
#endregion
I have Generic type with constraints
#region//==================================================DataFrameCollection
public class DataFrameCollection<T> : IEnumerable<T> where T : DataFrameGenericClass // "where T : Employee" Constraining type to Employee class only, (not to string or int).
{
List<T> DataFrameList = new List<T>();
public void Add(T element) // Add element at the bottom of the index (new data entry)
{
DataFrameList.Add(element);
}
public T Get(int index) // Get element at specfied index
{
return DataFrameList[index];
}
public void Update(int index, UInt16 Page) ///<<<<<< Previous C#Corner thread
{
T record = Get(index);
record.Page = Page;
}
public void Modify_LINArrayMessage1(int index, Byte[] message) // Modify element array at specfied index <<<<<< Previous C#Corner thread
{
T record = Get(index);
record.LIN_Array_Message1 = message;
//DataFrameList[index].LIN_Array_Message1 = message;
}
public void Modify_LINArrayMessage2(int index, Byte[] message) // Modify element at specfied index
{
DataFrameList[index].LIN_Array_Message2 = message;
}
public void Modify_Page(int index, UInt16 page16) // Modify element at specfied index
{
DataFrameList[index].Page = page16;
}
public void TraceDumpData(int index)
{
Trace.WriteLine("RawMessage:" + DataFrameList[index].RawMessage.ToString());
Trace.WriteLine("Page:"+DataFrameList[index].Page.ToString("X4"));
//### TODO Display LIN Array Message
}
//foreach support
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
return DataFrameList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return DataFrameList.GetEnumerator();
}
}
#endregion
Then I have main code
DataFrameCollection<DataFrameGenericClass> DataFrameLIN = new DataFrameCollection<DataFrameGenericClass>();
.... I created the record
DataFrameLIN.Add(new DataFrameGenericClass(0));
DataFrameLIN.Add(new DataFrameGenericClass(1));
DataFrameLIN.Add(new DataFrameGenericClass(2));
.....
Byte[] LinAddress1 = new Byte[9];
Byte[] LinAddress2 = new Byte[9];
....
// Fill data with LinAddress1 and LinAddress2
LinAddress2[0] 0x01; LinAddress2[1] 0xFF; etc etc etc
I then update generic records, note that index = 0;
DataFrameLIN.Modify_LINArrayMessage1(0, LinAddress1);
DataFrameLIN.Modify_LINArrayMessage2(0, LinAddress2);
I then modify the LinAddress1 and 2
LinAddress2[0] 0x11; LinAddress2[1] 0x44; etc etc etc
I then update generic records, note that index = 1;
DataFrameLIN.Modify_LINArrayMessage1(1, LinAddress1);
DataFrameLIN.Modify_LINArrayMessage2(1, LinAddress2);
But during debug, I found that the array within index 0 has same value as index 1 array.
It seem it reference to LinAddress1 rather than value as this would explain same value. How to isolate reference between these two so it retains corrects value?
Thanks
PS:Again, very sorry for deleting the thread, it was a mistake as I click too quickly!
Reply
Answers (
1
)
Webbrowser in web service problem
Multilingual keyboard support for C# touchscreen application