之前一直是用VB.NET作開發,最近換公司老闆的第一個交付的任務就是叫我寫報表,寫好後交出去,專案經理才說要用C#...
那就只好改囉!自己改嗎?我C#又不熟,當然是用工具。下面這個網站可以提供VB.NET和C#程式碼雙向轉換。http://labs.developerfusion.co.uk/convert/vb-to-csharp.aspx
前幾支報表轉的還都順利,只有在取出DataTable內資料時要手動改一下,如:
dtResult.Rows(i).("Item") 要改成 dtResult.Rows[i]["Item"]
但是轉到後面幾支比較複雜的報表,要計算表格的RowSpan,我的程式中有用到ReDim的地方就出現訊息
// ERROR: Not supported in C#: ReDimStatement
所以就參考網路資料寫了一個Function ReDim:
參考網址:http://www.cnblogs.com/skyiv/archive/2005/09/19/ReDim.html
static int[] ReDim(int[] array, int newLength)
{
if (array == null)
{
throw new ArgumentNullException("array");
}
if (array.Rank != 1)
{
throw new ArgumentException("只允許一維陣列", "array");
}
if (newLength < 0)
{
throw new ArgumentOutOfRangeException("newLength", "newLength需大於0");
}
if (newLength == array.Length) return array;
int[] newArray = new int[newLength];
Array.Copy(array, 0, newArray, 0, Math.Min(array.Length, newLength));
return newArray;
}
因為我用到的是整數陣列,所以我就將範例中原本宣告為Array的部份都直接改成int[],不然我還要找要怎麼作型別轉換,將傳回的Array轉回int[],我C#還不熟,趕專案先,以後再研究。