我正在从VB6过渡到VB.Net(VS 2010),对后者有一个基本的而不是广泛的理解.我显然有相当多的代码...我犹豫使用"升级"这个词当"端口"更容易,因为在以前版本的VS中的升级向导可能刚刚注释掉代码并说"嘿,你为什么不从头开始重新开始?"
我在Len()
函数中使用的一个过程用于确定字符串变量的长度.这仍然适用于VB.Net(虽然我想它实际上是对Strings.Len
方法的调用),但另一种选择是只查询.Length
变量的属性.
问题是使用哪个以及为什么.我查看了相关的MSDN页面,他们似乎告诉我的是方法/属性存在.没有任何关于性能问题的说法,特别是涉及大量呼叫的循环时.
那么,我的问题是,是否有人知道使用一种方法而不是另一种方法的任何测试和确认的好处,或者它是否仅仅是个人偏好的问题.关于类似情况的任何指示,我可能会遇到类似的情况,虽然根据Stack Overflow指南,这只是一个问题,我有兴趣看看是否有特定的答案.
对于枪支Java程序员来说,这可能是非常简单的,但是我(Java的相对新手)无法找到一个如何做到的简单,直接的例子,这意味着我将使用自我回答选项来希望能防止其他人经历类似的挫折.
我需要将错误信息输出到一个简单的文本文件.这些操作不常见且很小(有时根本不需要),因此没有必要为文件打开流; 文件在一个操作中打开,写入和关闭.
与我遇到的其他"追加"问题不同,这个问题要求在第一次调用Java应用程序运行时的方法时创建文件.该文件在此之前不存在.
原始代码是:
Path pathOfLog = Paths.get(gsOutputPathUsed + gsOutputFileName);
Charset charSetOfLog = Charset.forName("US-ASCII");
bwOfLog = Files.newBufferedWriter(pathOfLog, charSetOfLog);
bwOfLog.append(stringToWrite, 0, stringToWrite.length());
iReturn = stringToWrite.length();
bwOfLog.newLine();
bwOfLog.close();
Run Code Online (Sandbox Code Playgroud)
以gs开头的变量是显示输出位置的预填充字符串变量,stringToWrite是传入的参数.
所以.append方法应该足以表明我想要追加内容,对吧?
但事实并非如此; 每次调用该过程时,文件都只包含最近一次调用的字符串.
我的VB.NET项目中有一个公共类,它有一个List(Of String)
属性.这份名单需要由其他类项目中修改,但由于可能(在未来的一段时间)的项目外露出的课,我希望它是不可修改的,在该水平.修改项目中现有属性只能通过调用列表的方法(特别是.Add
偶尔.Clear
)来完成,而不是通过用新列表批量替换属性值(这就是为什么我将它作为ReadOnly
属性).
我想出了一种方法,但我不确定它是什么,你会称之为"优雅".
就是这样:
Friend mlst_ParameterNames As List(Of String) = New List(Of String)
Public ReadOnly Property ParameterNames() As List(Of String)
Get
Return New List(Of String)(mlst_ParameterNames)
End Get
End Property
Run Code Online (Sandbox Code Playgroud)
现在,这只是工作正常和花花公子.项目中mlst_ParameterNames
直接访问该字段的任何类都可以根据需要对其进行修改,但是通过公共属性访问它的任何程序都可以将其修改为内容,但由于属性过程始终返回副本,因此无处可去.列表,而不是列表本身.
但是,当然,这带来了开销,这就是为什么我觉得它只是......好吧,在某种程度上看起来"错误",即使它有效.
参数列表永远不会很大.它最多只包含50个项目,但通常少于10个项目,所以我看不出这是一个性能杀手.然而,它当然让我认为有些人可以拥有更加整洁和清洁的想法.
任何人?
我很惊讶,之前没有出现过,但我在这里或其他地方的搜索中都找不到任何东西.我发现了一些模糊相似的东西,这表明问题在于我的脚本中的Use命令仅持续一行,但没有迹象表明如何解决这个问题.
我正在尝试做的事情:创建一个通用脚本来创建一个包含所有常用模式和表的"模板"数据库.所有变量(例如数据库名称)都应在标题中设置,以便可以根据需要进行更改,并且可以运行脚本而无需进行任何有风险的搜索和替换操作来更改硬编码值.
问题是:我无法在正确的数据库中生成模式; 他们都在硕士生成.试图明确设置数据库没有帮助; 我刚收到运行时错误.
我的技能水平:长时间访问用户,但仍然在探索SQL Server的山脚下.我确信(好吧,希望)这对于更远的人来说这将是非常容易的.
有谁知道我怎么能做这样的事情?(现有代码如下所示.)
DECLARE @DBName NVARCHAR(50) = 'TheDBName';
-- Assume that there's a bunch of code to drop and create the database goes here.
-- This code executes correctly.
SET @SQL = 'Use [' + @DBName + ']';
Print @SQL;
EXEC(@SQL);
SET @Counter = 1;
WHILE @Counter <=3
BEGIN
SET @SQL = 'CREATE SCHEMA [' +
CASE @Counter
WHEN 1 THEN 'Schema1'
WHEN 2 THEN 'Schema2'
WHEN 3 THEN 'Schema3'
END
SET @SQL = @SQL …
Run Code Online (Sandbox Code Playgroud) vb.net ×2
class ×1
file ×1
generic-list ×1
java ×1
properties ×1
schema ×1
sql ×1
sql-server ×1
string ×1
t-sql ×1