gpt4 book ai didi

.net - 如何使用其他名称创建新的 System.String 类型?

转载 作者:行者123 更新时间:2023-12-04 02:15:59 26 4
gpt4 key购买 nike

我尝试逐步描述我的问题,因为我不知道如何用正确的编程术语来表达。

当我使用 System.String 类型,我执行以下操作:

  • 声明类型:Dim Str1 as String
  • 分配其值:Str1 = "This is a string"

  • 我想创建一个类似于 的新类型System.String 键入但名称不同。例如,我想创建一个 网址字符串 像这样输入字符串:
  • 声明类型:Dim Str2 as UrlString
  • 分配其值:Str2 = "http://www.example.com"

  • 我的问题是 : 我如何创建 网址字符串 类型?

    原因 : 我想创建UrlString类型来帮助我识别内容的值。例如,UrlString 类型表示字符串为 url 格式,PhoneString 表示字符串为电话格式,CreditCardString 类型表示字符串为信用卡格式等。

    更新:

    感谢 Marc Gravell 和 GSerg。这是解决方案:
    Class UrlString
    Private ReadOnly value As String

    Public Sub New(ByVal value As String)
    Me.value = value
    End Sub

    Public Shared Widening Operator CType(ByVal value As String) As UrlString
    Return New UrlString(value)
    End Operator

    Public Shared Widening Operator CType(ByVal u As UrlString) As String
    Return u.value
    End Operator

    Public Overrides Function GetHashCode() As Integer
    Return If(value Is Nothing, 0, value.GetHashCode())
    End Function

    Public Overrides Function Equals(ByVal obj As Object) As Boolean
    Return String.Equals(value, DirectCast(obj, String))
    End Function

    Public Overrides Function ToString() As String
    Return value
    End Function
    End Class

    最佳答案

    您需要从 string 添加一个隐式转换运算符至 UrlString让它工作。在 C# 中:

    class UrlString
    {
    private readonly string value;
    public UrlString(string value) { this.value = value; }
    public static implicit operator UrlString(string value)
    {
    return new UrlString(value);
    }
    public override int GetHashCode()
    {
    return value == null ? 0 : value.GetHashCode();
    }
    public override bool Equals(object obj)
    {
    return string.Equals(value, (string)obj);
    }
    public override string ToString()
    {
    return value;
    }
    }

    然后:
    UrlString foo = "abc";

    关于.net - 如何使用其他名称创建新的 System.String 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6451263/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com