我有一节课

public class Weapon
{
    //default settings
    public float[] defaultEnergy;
    public UltEvent<Weapon>[] defaultCallbacks;
    public MotionType[] defaultMotions;

    //special settings
    public float[] specialEnergy;
    public UltEvent<Weapon>[] specialCallbacks;
    public MotionType[] specialMotions;
}

我想在我的代码中以一种更有条理的方式区分默认设置和特殊设置.

如果我需要默认能量,我需要写weapon.defaultEnergy[i].

对于组织,我希望有一种类似于命名空间访问的语法.

我想写weapon.default.energy[i],以表明我指的是默认设置(对于特殊设置也是如此).

我可以在不创建新类的情况下使用这种语法吗?

推荐答案

添加这些内容如何:

public (float[] Energy, UltEvent<Weapon>[] CallBacks, MotionType[] Motions) Default =>
        (defaultEnergy, defaultCallbacks, defaultMotions);
public (float[] Energy, UltEvent<Weapon>[] CallBacks, MotionType[] Motions) Special =>
        (specialEnergy, specialCallbacks, specialMotions);

更改后:

public class Weapon
{
    //default settings
    public float[] defaultEnergy;
    public UltEvent<Weapon>[] defaultCallbacks;
    public MotionType[] defaultMotions;

    //special settings
    public float[] specialEnergy;
    public UltEvent<Weapon>[] specialCallbacks;
    public MotionType[] specialMotions;

    public (float[] Energy, UltEvent<Weapon>[] CallBacks, MotionType[] Motions) Default =>
        (defaultEnergy, defaultCallbacks, defaultMotions);
    public (float[] Energy, UltEvent<Weapon>[] CallBacks, MotionType[] Motions) Special =>
        (specialEnergy, specialCallbacks, specialMotions);
}

然后,我们可以像这样访问:

public static void Main()
{
    var weapon = new Weapon();
    weapon.defaultEnergy = new float[] {0, 1, 2};

    // access
    Console.WriteLine(weapon.Default.Energy[1]);
}

Csharp相关问答推荐

为什么Microsoft.AspNetCore. htttp.FormFile不实现IDDisposable?

获取Windows和Linux上的下载文件夹

ListaryImportProperty的默认DllImportSearchPathsProperty行为

为什么Blazor值在更改后没有立即呈现?

System.Text.Json数据化的C#类映射

由于POST中的应用程序/JWT,出现不支持的内容类型异常

为基本审计设置Audit.EntityFramework.Core

try 在.Net核心身份注册页面中使用AJAX,但没有成功..NET Core 5.0 Razor页面应用程序

Blazor Web App WASM的两个独立项目令人困惑

使用Entity Framework6在对象中填充列表会导致列表大多为空

如何在C#中转换泛型包装类内部的派生类

如何在同一成员上组合[JsonPropertyName]和[ObservableProperty]?

当我try 在与XAMP的MySQL服务器连接的ASP.NET核心应用程序中添加迁移时出现错误

System.NotSupportdException:流不支持读取

如何在使用属性 Select 器时判断是否可以为空

C#无法将.csv列转换为用于JSON转换的列表

Autofac -动态实例化:手动传递构造函数

如何在.NET Core 8中自定义标识用户模型

使用LibraryImport在多个dll中导入相同的函数

ASP.NET核心MVC|如何在控制器方法之间传递值