有谁能帮我把下面的js代码改写成C#的?
<script>
function pairaln(seq1, seq2){
// scoring scheme

var MATCH    =  1; // +1 for letters that match
var MISMATCH = -1; // -1 for letters that mismatch
var GAP      = -1; // -1 for any gap
// initialization

var score=[[]];
var pointer=[[]];
score[0][0]   = 0;
pointer[0][0] = 0;
var l1=seq1.length
var l2=seq2.length

for(var j = 1; j <= l1; j++) {

     score[0][j]   = GAP * j;
     pointer[0][j] = 2;
}
for (var i = 1; i <= l2; i++) {

score[i]=[];
pointer[i]=[];
     score[i][0]   = GAP * i;
     pointer[i][0] = 3;
}
// fill

for(var i = 1; i <= l2; i++) {
var letter2 = seq2.charAt(i-1);
 
     for(var j = 1; j <= l1; j++) {
    
         var diagonal_score, left_score, up_score;
         // calculate match score
        
         var letter1 = seq1.charAt(j-1);                        
        
         if (letter1 == letter2) {
            
             diagonal_score = score[i-1][j-1] + MATCH;
         }
        
         else {
             diagonal_score = score[i-1][j-1] + MISMATCH;
         }
         // calculate gap scores
        
         up_score   = score[i-1][j] + GAP;
         left_score = score[i][j-1] + GAP;
         // choose best score
        
         if (diagonal_score >= up_score) {
            
             if (diagonal_score >= left_score) {
                
                 score[i][j]   = diagonal_score;
                 pointer[i][j] = 1;
             }
        
         else {
                 score[i][j]   = left_score;
                 pointer[i][j] = 2;
             }
        
         } else {
            
             if (up_score >= left_score) {
                
                 score[i][j]   = up_score;
                 pointer[i][j] = 3;
             }
            
             else {
                 score[i][j]   = left_score;
                 pointer[i][j] = 2;
             }
         }
     }
}
// trace-back

var align1 = [];
var align2 = [];
// start at last cell of matrix
var j = l1;
var i = l2;
while (1) {
    
     if(pointer[i][j] == 0)break // ends at first cell of matrix
     if (pointer[i][j] == 1) {
        
         align1[align1.length] = seq1.charAt(j-1);
         align2[align2.length] = seq2.charAt(i-1);
         i--;
         j--;
     }
    
     if (pointer[i][j] == 2) {
        
         align1[align1.length] = seq1.charAt(j-1);
         align2[align2.length] = "-";
         j--;
     }
    
     if (pointer[i][j] == 3) {
        
         align1[align1.length] = "-";
         align2[align2.length] = seq2.charAt(i-1);
         i--;
     }    
}
align1 = align1.reverse();
align2 = align2.reverse();
return "序列:<p>"+seq1+"<br>"+seq2+"<p>比对结果:<table><tr><td>"+align1.join("</td><td>")+"</td></tr><tr><td>"+align2.join("</td><td>")+"</tr></table>"
}
document.write(pairaln('AGCGTAG', 'GTCAGA'))
</script>