gpt4 book ai didi

c# - 想直接从对象访问类属性(字段)

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:42 24 4
gpt4 key购买 nike

我编写了一个类,我想将其用作全局数据接口(interface),以便与来自基于 Web 的 API 的数据进行交互。因此,该类能够接受几乎任何基类型的值,并且就好像它是该基类型一样工作。

在幕后,我将对象的“值”存储为字符串,并且在大多数情况下,该类充当 String 对象的克隆,除了它可以尝试模拟任何其他基类 -语境。

虽然这有点多余,但我的问题/问题是,我怎样才能使这种类型的字段能够直接与其交互,而不是通过访问器?

例如:

public class PolyVar
{
protected string _myValue;

public PolyVar() { this._myValue = ""; }

public PolyVar(string value) { this._myValue = value; }

public string Value { get => this._myValue; set => this._myValue = value; }
}

然后,在项目的某处我想这样做:

string temp = "";
PolyVar work = ""; // in lieu of "PolyVar work = new PolyVar();"

temp = "Some string data here. " + work; // using just "work" instead of "work.Value"

那么你能否以访问/修改的方式构造类它的属性之一(在本例中为“_myValue”)是否可以直接通过类本身来代替必须使用访问器? (因为基类已经全部支持了?)

最佳答案

您必须 1) 创建从字符串到 PolyVar 的隐式转换,以及 2) 覆盖 ToString() 以便在需要时将其正确转换为简单字符串。

public class PolyVar {
protected string _myValue;

public PolyVar() { this._myValue = ""; }

public PolyVar(string value) { this._myValue = value; }

public string Value { get { return this._myValue; } set { this._myValue = value; } }

// Override ToString() so "" + polyVar1 is correctly converted.
public override string ToString()
{
return this.Value;
}

// Create an implicit cast operator from string to PolyVar
public static implicit operator PolyVar(string x)
{
return new PolyVar( x );
}
}


class Ppal {
static void Main()
{
PolyVar work = "data"; // in lieu of "PolyVar work = new PolyVar();"
string temp = "Some string data here: " + work;

System.Console.WriteLine( temp );
}
}

希望这对您有所帮助。

关于c# - 想直接从对象访问类属性(字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51574295/

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