Visual Basic.NET的引用与传值解析

需积分: 0 1 下载量 74 浏览量 更新于2024-08-23 收藏 111KB PPT 举报
"这篇文档是关于Visual Basic .NET (VB.NET)编程中的引用与传值概念,以及控制结构和过程的介绍。主要内容包括选择控制结构(条件语句和情况语句),循环控制结构,GoTo语句,以及过程的参数传递机制。" 在VB.NET中,参数传递分为两种方式:引用(ByRef)和传值(ByVal)。引用传递允许过程直接修改传入参数的值,而传值传递则创建参数的副本,只修改副本而不影响原变量。 1. 引用传递(ByRef) 引用传递是通过ByRef关键字指定的,这是VB.NET中参数按地址传递的方式。默认情况下,VB.NET采用的是传值传递。如果希望参数按引用传递,开发者需要在定义函数或子程序参数时显式添加ByRef。这样,当通过引用方式传递变量给过程时,过程内部对参数的任何修改都会直接影响到原始变量的值。 2. 传值传递(ByVal) 传值传递是通过ByVal关键字实现的。在这种模式下,系统会创建实参的一个副本,并将副本的值传递给过程。由于过程不能直接访问原始变量的地址,因此无法改变原始变量的值,所有操作都发生在副本上。 除了参数传递,文档还提到了选择控制结构,这是编程中处理条件分支的关键。选择控制结构包括: - 条件语句(If...Then...Else) 分为单行结构和块结构,用于根据条件执行不同的代码块。单行结构简单直接,块结构可以包含多个ElseIf分支和一个Else分支,提供更复杂的逻辑判断。 - IIf函数 是If...Then...Else结构的简化形式,提供了一种简便的条件判断方法。IIf函数接受三个参数:一个条件,一个真部分(当条件为真时执行的代码),和一个假部分(条件为假时执行的代码)。 - 多分支控制结构(Select Case) 使用Select Case语句可以在多个可能的情况中选择执行特定的代码块。测试表达式与一系列的Case条件进行匹配,找到匹配的Case后执行相应的语句块。如果没有任何Case匹配,可以使用Case Else来处理其他情况。 文档还涵盖了循环控制结构(如For...Next、While... Wend等)和GoTo语句,这些都是程序流程控制的重要组成部分。此外,还讨论了过程(Sub和Function)的定义和调用,以及如何处理可选参数和可变参数,增强了代码的灵活性和可扩展性。 VB.NET的参数传递机制以及选择控制结构是编写复杂程序的基础,理解并熟练运用这些概念能帮助开发者编写出更加灵活和高效的代码。

#include "mylogin.h" mylogin::mylogin(QWidget *parent) : QDialog(parent) { this->init_ui(); connect(this->bnt_login, &QPushButton::clicked, this, &mylogin::do_login); connect(this->bnt_register, &QPushButton::clicked , this ,&mylogin::do_enroll); } mylogin::~mylogin() { } void mylogin::init_ui() { this->setFixedSize(QSize(600,350)); this->setWindowTitle(tr("岑超升")); this->setWindowIcon(QIcon(":/src/1.png")); this->lb1 = new QLabel(); this->lb2 = new QLabel(); this->lb3 = new QLabel(); this->lb1->setFixedSize(QSize(560,200)); QPixmap pic; pic.load(":/src/2.png"); //this->lb1->setPixmap(pic.scaled(this->lb1->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); this->lb1->setPixmap(QPixmap(":/src/2.png")); this->lb2->setText(tr("用户名:")); this->lb3->setText(tr("密 码:")); this->usr_name_le = new QLineEdit(); //这两个参数后面传入信号中去,然后emit发射出去 this->usr_pass_le = new QLineEdit(); this->usr_pass_le->setEchoMode(QLineEdit::Password); this->bnt_login = new QPushButton(tr("登 陆")); this->bnt_register = new QPushButton(tr("注 册")); this->hb1 = new QHBoxLayout(); this->hb2 = new QHBoxLayout(); this->hb3 = new QHBoxLayout(); this->hb1->addWidget(this->lb2); this->hb1->addWidget(this->usr_name_le); this->hb2->addWidget(this->lb3); this->hb2->addWidget(this->usr_pass_le); this->hb3->addWidget(this->bnt_login); this->hb3->addWidget(this->bnt_register); this->vb1 = new QVBoxLayout(); this->vb1->addWidget(this->lb1); this->vb1->addLayout(this->hb1); this->vb1->addLayout(this->hb2); this->vb1->addLayout(this->hb3); this->setLayout(this->vb1); } void mylogin::do_login() { emit sig_login(usr_name_le->text(), usr_pass_le->text()); //需要把这里输入的账号密码信息发送到myapp那去,用到的函数是emit //需要自定义一个信号,sig_login //这个槽函数能够发出信号 } void mylogin::do_enroll() { emit sig_enroll(); }解释每一行代码

2023-06-09 上传