小编ste*_*ell的帖子

如何将一行值从2D数组复制到一维数组?

我们有以下对象

int [,] oGridCells;
Run Code Online (Sandbox Code Playgroud)

它仅用于固定的第一个索引

int iIndex = 5;
for (int iLoop = 0; iLoop < iUpperBound; iLoop++)
{
  //Get the value from the 2D array
  iValue = oGridCells[iIndex, iLoop];

  //Do something with iValue
}
Run Code Online (Sandbox Code Playgroud)

在.NET中是否有办法将固定的第一个索引处的值转换为单个维度数组(除了通过循环值)?

如果数组只循环一次,我怀疑它会加速代码(并且可能会使代码变慢).但是如果数组被大量操作,那么单维数组比多维数组更有效.

我提出问题的主要原因是看它是否可以完成以及如何完成,而不是将其用于生产代码.

.net c# arrays multidimensional-array

16
推荐指数
1
解决办法
4万
查看次数

如何在vb.net中实现值类型的C#'as'关键字?

我们的大多数开发都是在vb.net中完成的(不是我的选择),一个经常使用的代码模式使用'On Error GoTo'后跟'Resume Next',以便所有数据库字段都可以使用DirectCast()读取DBNull值只是被忽略.

目前的代码是

On Error GoTo error_code
oObject.Name = DirectCast(oReader.Item("Name"), String)
oObject.Value = DirectCast(oReader.Item("Value"), Integer)
error_code:
Resume Next
Run Code Online (Sandbox Code Playgroud)

C#代码替换这个启用删除On Error代码即可

oObject.Name = oReader["Name"] as string ?? string.Empty;
oObject.Value = oReader["Value"] as int? ?? -1;
Run Code Online (Sandbox Code Playgroud)

问题是这个C#代码的vb.net eqivelent使用TryCast(),它只能用于引用类型(可空类型是值类型),而C#as关键字可以用于引用和可空类型.

总而言之,有没有人有一个vb.net代码的例子,它在每个数据库字段的单行中与C#代码做同样的事情?

-编辑-

在我们的案例中,我已经确定了我认为最好的解决方案.Helper方法不适合(由于管理),我们不能使用扩展方法,因为我们只使用.NET 2.0(尽管使用VS 2008,因此我们获得了If())

oObject.Name = If(oReader.IsDBNull(oReader.GetOrdinal("Name")), String.Empty, oReader.GetString(oReader.GetOrdinal("Name")))
oObject.Value = If(oReader.IsDBNull(oReader.GetOrdinal("Value")), 0, oReader.GetInt32(oReader.GetOrdinal("Value")))
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net

12
推荐指数
2
解决办法
3381
查看次数

在VB.NET中建立空数组的建议方法是什么?

在VB.NET中使用数组的最佳方法是什么,可以是Nothing或初始化并给它一个零长度?

我能想到的三个选择是:

ReDim oBytes(-1)

oBytes = New Byte(-1) {}

oBytes = New Byte() {}
Run Code Online (Sandbox Code Playgroud)

第一个例子是我公司的大多数开发人员(我们以前做VB 6)一直使用的.我个人更喜欢第三个例子,因为它是最容易理解发生的事情.

那么每种方法的积极和消极是什么(我知道选项2和3非常相似)?


编辑
所以有人知道有理由避免ReDim其他因为它是VB日的延续吗?

并非我不会接受这个答案,如果这是所有人都有的!

vb.net arrays

11
推荐指数
1
解决办法
1万
查看次数

控件应该被禁用和隐藏还是只是隐藏?

在.NET窗体上操作控件时,以下哪项是最佳实践?为什么?

//Hide control from user and stop control form being useable
oControl.Enabled = false;
oControl.Visible = false;
Run Code Online (Sandbox Code Playgroud)

要么

//Hide control from user and stop control form being useable
oControl.Visible = false;
Run Code Online (Sandbox Code Playgroud)

我一直在使用第一个案例并且在隐藏它时总是禁用控件,但我被告知这是错误的,我应该只是隐藏它.我似乎依稀记得在某个地方阅读如果你没有明确地让一个控件可以继续与用户交互.

任何启示都会被贬低.

.net c# controls winforms

9
推荐指数
4
解决办法
5379
查看次数

.NET Enum基本类型的Char

根据msdn Enums不能有基本类型的char.为什么enum没有基本类型的char?另外为什么微软强烈建议枚举包含一个值为0的常量?非常感谢你

.net enums char

9
推荐指数
1
解决办法
782
查看次数

XmlWriter编写空的xmlns

我正在使用以下代码初始化XmlDocument

XmlDocument moDocument = new XmlDocument();
moDocument.AppendChild(moDocument.CreateXmlDeclaration("1.0", "UTF-8", null));
moDocument.AppendChild(moDocument.CreateElement("kml", "http://www.opengis.net/kml/2.2"));
Run Code Online (Sandbox Code Playgroud)

在此过程的后面,我使用以下代码向其中写入一些值

using (XmlWriter oWriter = oDocument.DocumentElement.CreateNavigator().AppendChild())
{
  oWriter.WriteStartElement("Placemark");
  //....
  oWriter.WriteEndElement();
  oWriter.Flush();
}
Run Code Online (Sandbox Code Playgroud)

保存文档后,最终得到以下xml

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark xmlns="">
    <!-- -->   
  </Placemark>
</kml>
Run Code Online (Sandbox Code Playgroud)

如何摆脱Placemark元素上的空xmlns?

-编辑以显示更改位置标记的方式-
如果我将名称空间放在位置标记的写入中,则不会将任何元素添加到文档中。

.net c# xml xmlwriter

5
推荐指数
1
解决办法
5835
查看次数

使用哪个循环,for或do/while?

使用C#(或VB.NET)当需要计数器时,应该使用哪个循环(for循环或do/while循环)?

如果循环只应迭代设定次数或设定范围,它会有所不同吗?

场景A - for循环

for (int iLoop = 0; iLoop < int.MaxValue; iLoop++)
{
  //Maybe do work here

  //Test criteria
  if (Criteria)
  {
    //Exit the loop
    break;
  }

  //Maybe do work here
}
Run Code Online (Sandbox Code Playgroud)

好处

  • 计数器被声明为循环的一部分
  • 易于实现计数器范围

缺点

  • 必须使用if离开循环

场景B - do/while循环

int iLoop = 0;
do
{
  //Increment the counter
  iLoop++;

  //Do work here
} while (Criteria);
Run Code Online (Sandbox Code Playgroud)

要么

int iLoop = 0;
while (Criteria)
{
  //Increment the counter
  iLoop++; 

  //Do work here 
}
Run Code Online (Sandbox Code Playgroud)

好处

  • 离开循环是循环结构的一部分
  • 选择在循环块之前或之后进行评估

缺点

  • 必须手动管理计数器

c# loops

4
推荐指数
2
解决办法
1385
查看次数

如何在VB.net中使用Dictionary?

我已经编写了这个函数来自动从字符串数组中的不同值中将性别更正为M或F. 它工作正常但我的经理告诉我使用Dictionary,他说效率更高.但我不知道.有谁想帮我理解如何做到这一点?谢谢.

    Public Function AutoGender(ByVal dt As DataTable) As DataTable        

    Dim Gender As String = ""
    Dim Mkeywords() As String = {"boy", "boys", "male", "man", "m", "men", "guy"}
    Dim Fkeywords() As String = {"girl", "girls", "female", "woman", "f", "women", "chick"}
    Dim row As DataRow
        For Each row In dt.Rows
            If Mkeywords.Contains(row("Gender").ToString.ToLower) Then
                Gender = "M"
                row("Gender") = Gender
            ElseIf Fkeywords.Contains(row("Gender").ToString.ToLower) Then
                Gender = "F"
                row("Gender") = Gender
            End If
        Next
    Return dt

    End Function
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net arrays dictionary

4
推荐指数
1
解决办法
3万
查看次数

安装.NET Framework

我目前正在更新我们的软件安装程序,并且有一些关于安装.NET框架的问题.

  1. 安装.NET 2.0 SP2所需的安装程序(.exe或.msi)是什么?

  2. 安装.NET 3.5 SP1所需的安装程序(.exe或.msi)是什么?

微软的下载页面有些含糊不清.我相信我需要.Microsoft .NET Framework 2.0 Service Pack 2和Microsoft .NET Framework 3.5 Service Pack 1(完整包).

我们需要适用于Windows 2000的.NET 2.0 SP2; .NET 3.5 SP1适用于Windows XP,Windows Server 2003,Windows Vista x86和x64,Windows Server 2008 x86和x64以及Windows 7 x86和x64.

这些将作为软件先决条件从Advanced Installer运行..NET 3.5必须支持x86和x64操作系统.

.net installation advanced-installer

2
推荐指数
1
解决办法
1169
查看次数