我来自Java和.NET背景.
在VB6中,您似乎并不总是在使用它时创建类的实例.例如,当使用Printer类时,您可以简单地说Printer.print而不必首先创建实例,即Dim printer As New Printer然后运行printer.Print.我知道打印机是VB6中的系统对象,但为什么不必创建实例呢?
在.NET中创建和使用事件时,我从未使用过"添加"和"删除".看看下面的代码:
public event EventHandler InitComplete
{
add
{
base.Events.AddHandler(EventInitComplete, value);
}
remove
{
base.Events.RemoveHandler(EventInitComplete, value);
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个非常简单的问题,但是'价值'在哪里宣布?任何人都可以推荐使用添加和删除的好教程.我已经阅读了一些,但仍然不够明智.
我来自面向对象的背景.为什么"Test"(注意引号)显示在此代码片段中(在消息框中).我期望逻辑测试:'如果Test ="True"'返回False,因为变体包含布尔值而不是字符串.因此,我不希望消息框出现,但它确实:
Dim Test As Variant
Test = True
If Test = "True" Then //line 5
MsgBox ("Test")
End If
Run Code Online (Sandbox Code Playgroud) 我见过这样的代码(不是在连续的行上,而是在相同的函数范围内):
Dim con1 As SqlConnection
con1 = New SqlConnection
'More code here
con1 = New SqlConnection
con1 = Nothing
Run Code Online (Sandbox Code Playgroud)
我相信这只是一个错误,但我想检查一下我没有意识到这里没有一种形式的阴影.第一个con1变量会发生什么?我认为它是无法访问的,因为没有对象的引用.
我有一个应用程序,我正在转移到另一台服务器.它抱怨它不见了TABCTL32.OCX.我已将此文件放在另一台服务器上,我想复制并粘贴它.
我发现TABCTL32.DEP在我要移动的服务器上还有一个文件.我是否必须复制两个文件或者依赖文件是否可选?
我试过没有DEP.该应用程序适用于这两种情况.它是一个生产服务器,所以我想确定.
请看下面的代码:
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Data.OracleClient
Public Class clsParameterValues
Implements IDisposable
Private paramValues(0) As DbParameter
Public Function AssignParameterValues(ByVal strParameterName As String, ByVal strParameterValue As String, ByVal intDatabaseType As Integer) As Integer
Dim intArrayBound As Integer
intArrayBound = UBound(paramValues)
If intArrayBound > 0 Then
ReDim paramValues(intArrayBound)
End If
If intDatabaseType = 1 Then
paramValues(intArrayBound) = New SqlParameter(strParameterName, strParameterValue)
ElseIf intDatabaseType = 2 Then
paramValues(intArrayBound) = New OracleParameter(strParameterName, strParameterValue)
'paramValues(intArrayBound) = New OracleParameter(":" & strParameterName, OracleType.Int32)
'paramValues(intArrayBound).Value = strParameterValue
End If …Run Code Online (Sandbox Code Playgroud) 我执行以下代码:
use AdventureWorks2008R2
begin transaction
BEGIN
alter table HumanResources.Department add newcolumn int
update HumanResources.Department set newcolumn=1 where departmentid=1
END
commit
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
列名称"newcolumn"无效.
可以ALTER在这样的交易中包含语句吗?如果是这样,我该如何防止此错误?
我在网上研究了这个,例如这里.我没有找到我的具体问题的答案.
我明白了一个反编译和dissassembler(之间的区别.NET程序反编译/反编译器),即一个dissassembler允许你转换机器代码,汇编语言(您可以在Visual Studio中的Dissassembly窗口中看到)和反编译汇编语言转换成高级语言,例如C#.
是否可以在文本文件中看到由Jitter生成的汇编代码(来自Dissassembly窗口)?我怀疑不是因为它被优化为Just In Time.
另外,在我的第一个问题的背景下,MSIL是汇编语言还是高级语言?即,在.NET那里出现两个汇编语言,即MSIL和由抖动产生的汇编语言,虽然我怀疑答案是抖动所产生的机器代码,其被格式化为在Dissassembly窗口汇编语言.
我花时间在这里阅读其他问题,但我没有找到答案.
前几天我在读一篇文章(我相信是在MSDN上),里面说.NET JIT编译器生成的机器代码不针对Intel指令集。它说:“英特尔输了”。它是否正确?如果它不针对 Intel 指令集,那么它针对什么指令集?
我在配备 Intel 四核处理器的 PC 上运行 .NET 框架。因此,Intel 必须实现 .NET 目标的指令集。
当我开始大学时,Java和.NET是用于教学的技术.
我已经熟悉并在过去三年中获得了基于COM(组件对象模型)的语言(如VB6)的经验.我理解基于COM的语言与更高级别的现代语言之间的区别.
我不明白注册表中发生了什么.例如,我执行以下命令:
regsvr32 myDLL.dll
Run Code Online (Sandbox Code Playgroud)
然后,我可以在以下位置找到一个条目:HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID.这是VB6程序的唯一条目吗?例如,如果我执行了以下操作,那么DLL仍然可用:
我试过这个并没有用.
.net ×4
vb6 ×4
vb.net ×3
arrays ×1
asp.net ×1
c# ×1
cil ×1
com ×1
installation ×1
jit ×1
ocx ×1
sql ×1
sql-server ×1
t-sql ×1
transactions ×1