Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Перевод C# to VB.NET


Автор: thomas 7.7.2007, 11:08
Приветствую всех.
Даже немного стыдно спрашивать, но ...
Переписываю вот такую функцию с C#
Код

public String[] GetExcelSheetNames()
            {                
                System.Data.DataTable dt = null;
                try
                {
                    cn.Open();
                    
                    // Get the data table containing the schema
                    dt = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
     
                    if(dt == null)
                    {
                        return null;
                    }

                    String[] excelSheets = new String[dt.Rows.Count];
                    int i = 0;

                    // Add the sheet name to the string array.
                    foreach(DataRow row in dt.Rows)
                    {
                        string strSheetTableName = row["TABLE_NAME"].ToString();
                        excelSheets[i] = strSheetTableName.Substring(0,strSheetTableName.Length-1); 
                        i++;
                    }
                    
                    
                    return excelSheets;
                }
                catch(Exception ex)
                {
                    throw new Exception(ex.Message) ;
                }
                finally
                {
                    // Clean up.
                    cn.Close();                
                }
            }

на VB.NET
Код

Public Function GetExcelSheetNames() As String()
        Dim dt As DataTable
        dt = Nothing
        Try
            con.Open()
            dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
            If dt = Nothing Then 'ЗДЕСЬ РУГАЕТСЯ, не нравиться оператор "=".    Wat is probleem???
                Return Nothing
            End If
            Dim excelSheet() As String
            Dim size As Integer = dt.Rows.Count
            excelSheet = New String(size) {}
            Dim i As Int16 = 0
            For Each row As DataRow In dt.Rows
                Dim strSheetTableName As String = row("TABLE_NAME").ToString()
                excelSheet(i) = strSheetTableName.Substring(0, strSheetTableName.Length - 1)
                i += 1
            Next
            Return excelSheet
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            con.Close()
        End Try
    End Function


null в C# соответствуюет Nothing в VB.NET

Так почему он не понимает если я спрашиваю про таблицу. 

Заранее спасибо. 

Автор: tol05 7.7.2007, 12:05
А вот так? 
Код

If dt Is Nothing Then...


Автор: -ser- 7.7.2007, 12:08
= сравнивает числовые значения. попробуй Is/IsNot. 
посмотри Comparison Operators in Visual Basic.
у тебя компилятор пытается присвоить null таблице и не понимает причем тогда тут if.

Автор: thomas 7.7.2007, 12:14
tol05
-ser-

Спасибо за отклики!

Да-с, ступил. Ведь подумал же про Is.
Вот что значит, полгода не писать вообще и в VB в частности. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)