Кастинг в Visual Basic?

Пожалуйста, измените ваш код к этому:

public class Example {

    public static void main(String[] args) {
        int x = 0, n = 0, p = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your number to check even or odd: ");
        x = sc.nextInt();
        evenOdd(x);
        System.out.println("Enter your number to make a box: ");
        n = sc.nextInt();
        boxMake(n);
        System.out.println("Enter a number to check if prime: ");
        p = sc.nextInt();
        checkPrime(p);
        sc.close();
    }

    public static void evenOdd(int x) {
        if (x % 2 == 0) {
            System.out.println(x + " is even.");
            return;
        }
        System.out.println(x + " is odd.");
    }

    public static void boxMake(int n) {
        for (int i = 0; i < n; i++) {
            for (int x = 0; x < n; x++) {
                System.out.print("*");
            }
            System.out.println("");
        }
    }

    public static void checkPrime(int n) {
        int i;
        int m = 0;
        int flag = 0;
        m = n / 2;
        if (n == 0 || n == 1) {
            System.out.println(n + " is not a prime number");
        } else {
            for (i = 2; i <= m; i++) {
                if (n % i == 0) {
                    System.out.println(n + " is not a prime number");
                    flag = 1;
                    break;
                }
            }
            if (flag == 0) {
                System.out.println(n + " is a prime number");
            }
        }
    }
}
10
задан Kredns 14 April 2009 в 18:08
поделиться

4 ответа

C #:

(CheckBox)sender

VB:

CType(sender, CheckBox)
18
ответ дан 3 December 2019 в 14:35
поделиться

VB на самом деле имеет 2 понятия о кастинге.

  1. Приведение в стиле CLR
  2. Lexical Casting

Приведение в стиле CLR - это то, с чем пользователь C # более знаком. Это использует систему типов CLR и преобразования для выполнения приведения. VB имеет DirectCast и TryCast, эквивалентные C # cast и как оператор соответственно.

Лексические приведения в VB выполняют дополнительную работу в дополнение к системе типов CLR. Они на самом деле представляют собой набор потенциальных бросков. Лексические приведения легко обнаруживаются при поиске префикса C в операторе приведения: CType, CInt, CString и т. Д ... Эти приведения, если они не известны непосредственно компилятору, будут проходить во время выполнения VB. Во время выполнения будет выполняться интерпретация поверх системы типов, чтобы позволить приведению типа приведенных ниже работать

Dim v1 = CType("1", Integer)
Dim v2 = CBool("1")
11
ответ дан 3 December 2019 в 14:35
поделиться

Адам Робинсон правильный, также DirectCast доступен для вас.

2
ответ дан 3 December 2019 в 14:35
поделиться

DirectCast выполнит преобразование во время компиляции, но может использоваться только для приведения ссылочных типов. Ctype будет выполнять преобразование во время выполнения (медленнее, чем преобразование во время компиляции), но, очевидно, полезно для преобразования типов значений. В вашем случае «отправитель» является ссылочным типом, поэтому DirectCast был бы подходящим вариантом.

2
ответ дан 3 December 2019 в 14:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: