VB to C# Functions

后端 未结 14 1017
忘了有多久
忘了有多久 2020-12-02 06:51

Which are the equivalent of the following operators from VB.Net to C#?

  • UBound()
  • LBound()
  • IsNothing()
  • <
相关标签:
14条回答
  • 2020-12-02 07:06
    UBound()  "array".Length
    LBound()
    IsNothing(): "object" == null
    Chr()     (char)"N"
    Len()     "string".Length
    UCase()   "string".ToUpper()
    LCase()   "string".ToLower()
    Left()    "string".Substring(from, to)
    Right()   "string".Substring(from, to)
    RTrim()   "string".TrimEnd()
    LTrim()   "string".TrimStart()
    Trim()    "string".Trim()
    Mid()     "string".Substring(from, to)
    Replace() "string".Replace()
    Split()   "string".Split()
    Join()    String.Join()
    MsgBox()  MessageBox.Show()
    IIF()     validate ? iftrue : iffalse;
    
    0 讨论(0)
  • 2020-12-02 07:09

    In addition to the answers above. Be carefull with replacing Len() -> x.Length. VB Len() allows you to pass null, but in c# you will get an exception. Sometimes it would be better to use String.IsNullrEmpty() (If the situation allows)

    0 讨论(0)
  • 2020-12-02 07:12
    VB             C#
    
    UBound()     = yourArray.GetUpperBound(0) or yourArray.Length for one-dimesional arrays
    LBound()     = yourArray.GetLowerBound(0)
    IsNothing()  = Object.ReferenceEquals(obj,null)
    Chr()        = Convert.ToChar()
    Len()        = "string".Length
    UCase()      = "string".ToUpper()
    LCase()      = "string".ToLower()
    Left()       = "string".Substring(0, length)
    Right()      = "string".Substring("string".Length - desiredLength)
    RTrim()      = "string".TrimEnd()
    LTrim()      = "string".TrimStart()
    Trim()       = "string".Trim()
    Mid()        = "string".Substring(start, length)
    Replace()    = "string".Replace()
    Split()      = "string".Split()
    Join()       = String.Join()
    MsgBox()     = MessageBox.Show()
    IIF()        = (boolean_condition ? "true" : "false")
    

    Notes

    • yourArray.GetUpperBound(0) vs yourArray.Length: if the array is zero-length, GetUpperBound will return -1, while Length will return 0. UBound() in VB.NET will return -1 for zero-length arrays.
    • The VB string functions uses a one based index, while the .NET method uses a zero based index. I.e. Mid("asdf",2,2) corresponds to "asdf".SubString(1,2).
    • ? is not the exact equivalent of IIf because IIf always evaluates both arguments, and ? only evaluates the one it needs. This could matter if there are side effects of the evaluation ~ shudder!
    • The Many classic VB String functions, including Len(), UCase(), LCase(), Right(), RTrim(), and Trim(), will treat an argument of Nothing (Null in c#) as being equivalent to a zero-length string. Running string methods on Nothing will, of course, throw an exception.
    • You can also pass Nothing to the classic VB Mid() and Replace() functions. Instead of throwing an exception, these will return Nothing.
    0 讨论(0)
  • 2020-12-02 07:12

    Most of these would be instance methods on the string object that return the modified string.

    MsgBox vs. MessageBox.Show(..)
    IIF vs. (expression?returnValueIfTrue:returnValueElse)
    0 讨论(0)
  • 2020-12-02 07:12

    IIf(test, trueval, falseval) >> (test ? trueval : falseval);

    IsNothing(obj) >> (obj == null);

    UCase(str) >> str.ToUpper();

    LCase(str) >> str.ToLower();

    0 讨论(0)
  • 2020-12-02 07:14

    You'll find the conversion for many of these functions on this wikipedia page.

    0 讨论(0)
提交回复
热议问题