gpt4 book ai didi

C# 不能改变返回值?

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:04 25 4
gpt4 key购买 nike

我有点迷恋 C# 结构。我有以下代码摘录(对质量感到抱歉 - 我尽可能地减少了):

namespace Generics
{
public struct Generic
{
public struct Traverse
{
public double TraverseWidth, CurrentPosition;
}
}

public class XXXSettings
{
private Generics.Generic.Traverse _TRAVERSE;

public Generics.Generic.Traverse TraverseData
{
get { return _TRAVERSE; }
set { this._TRAVERSE = TraverseData; }
}

public XXXSettings()
{
_TRAVERSE = new Generics.Generic.Traverse() { CurrentPosition = 0, TraverseWidth = 0 };
}
}
}

namespace XXX_Driver
{
public class XXXClient
{
private Generics.XXXSettings _Settings;

public Generics.XXXSettings Settings
{
get { return _Settings; }
set { this._Settings = Settings; }
}
public bool Connect()
{
if (this.Settings == null)
{
throw new ArgumentNullException();
}

Settings.TraverseData.TraverseWidth = "1234";

}
}
}

我的问题:最后一行代码

Settings.TraverseData

标记为“XXXSettings.TraverseData 的返回值不能更改,因为它不是变量。”

但这是为什么呢?我习惯了 VB.NET 的结构,不知道这种行为?!

甚至

_Settings.TraverseData.TraverseWidth = new Generics.Generic.Traverse() { TraverseWidth = 1234, CurrentPosition = 0 };

没用。 C# 中的结构至少有任何用途吗?我认为这是一个值(value)观的集合体,但如果它们不可访问?!

感谢您的一些解释和一些提示,我应该如何更改我的代码:)

最佳答案

实际上,TraverseData 不是一个变量:

public Generics.Generic.Traverse TraverseData
{
get { return _TRAVERSE; }
set { this._TRAVERSE = TraverseData; } // Mistake is here !!
}

使用value关键字获取实际设置值:

public Generics.Generic.Traverse TraverseData
{
get { return _TRAVERSE; }
set { this._TRAVERSE = value; }
}

关于C# 不能改变返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33541269/

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