1

我创建了一个返回字符串的 InputBox 类,但我希望该类在退出时返回一个字符串。

我希望它的行为与 Visual Basic 输入框完全一样。

现在我已经将一个可变字符串值传递给构造函数并以这种方式进行更改。但后来我意识到 Visual Basic 输入框要好得多。

myValue = InputBox(message, title, defaultValue)

我怎样才能像这样创建自己的 InputBox 类?我意识到我可以将 VB 输入框导入 c#,但我想制作自己的自定义输入框。

编辑:我想我对此如此着迷的原因是因为 Visual Basic 允许您在不输入类名的情况下调用函数。我希望有一种方法可以在不使用委托的情况下在 C# 中执行此操作。我认为我的解决方案可能是创建一个封装我的表单的函数。所以也许我会把我的问题改写为有没有一种方法可以通过在视觉上表现得像一个类的东西来返回一个值?

4

1 回答 1

1

假设 Visual Basic InputBox 是一个类是不正确的。事实上,它是一个函数。这是方法定义:

Public Function InputBox( _
    ByVal Prompt As String, _
    Optional ByVal Title As String = "", _
    Optional ByVal DefaultResponse As String = "", _
    Optional ByVal Xpos As Integer = -1, _
    Optional ByVal YPos As Integer = -1 _
) As String

再深入一点,它作为Interaction类的方法驻留在 Microsoft.VisualBasic.dll 中。

模拟 VB.NET 语法糖的最接近的方法是将您的 custom 隐式转换InputBox为 a string,例如:

public class InputBox
{
    private string _title;

    public InputBox(string title)
    {
        _title = title;
    }

    public static implicit operator string(InputBox from)
    {
        return from._title;
    }
}

// .. elsewhere ..
 string title = new InputBox("Test");
 Console.WriteLine(title); // prints Test

..虽然我不确定我是否会亲自这样做。

显然title是一个例子。您的InputBox类将产生一个Form(或从它继承)并将输入返回到表单中。

..请问你为什么要复制这个?

于 2013-06-13T01:09:23.543 回答