You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET带参数属性实现及C#同类写法报错问题咨询

在C#中实现VB.NET风格的带参数属性

嗨,我来帮你搞定这个问题!C#里没有VB.NET那种直接给普通属性附加参数的语法,但我们有**索引器(Indexer)**来实现完全相同的功能——它允许你像访问数组那样,通过参数来读取或设置类内部的对应数据。

先看看你写的C#代码里的几个明显问题:

  • 语法错误:public string[int x] address 完全不符合C#的语法规则,索引器的核心关键字是this,不是属性名加参数
  • 逻辑错误:你在get里返回了整个m_address数组,而不是对应索引的元素;赋值的时候也直接把整个数组替换了,这和VB的逻辑不符
  • 变量问题:index没有定义,index.length应该是m_address.Length(而且C#里数组长度是Length属性,不是小写的length)

正确的C#实现(完全对应你的VB.NET代码逻辑)

public class Geek
{
    // 注意:VB里的m_Address(2)是创建一个下标0-2的数组,对应C#里长度为3的数组
    private string[] m_address = new string[3];

    // 这就是C#的索引器:用this关键字,后面跟参数列表
    public string this[int index]
    {
        get
        {
            if (index >= 0 && index < m_address.Length)
            {
                return m_address[index];
            }
            // 超出范围可以返回null,或者抛出ArgumentOutOfRangeException,看你需求
            return null;
        }
        set
        {
            if (index >= 0 && index < m_address.Length)
            {
                m_address[index] = value;
            }
            // 同样,超出范围可以选择忽略或者抛异常
        }
    }
}

使用方式(和VB.NET几乎一样)

var hassn = new Geek();
// 赋值的时候直接用实例+[索引]的形式
hassn[0] = "National Street";
hassn[1] = "Imbaba neighborhood";
hassn[2] = "Giza";

// 读取也是一样的写法
for (int counter = 0; counter < 3; counter++)
{
    MessageBox.Show(hassn[counter]);
}

额外小技巧:多个索引器的区分

如果你的类需要多种不同的带参数"属性"(比如一个按索引取地址,一个按键名取配置),可以用[IndexerName]特性给索引器命名,方便在反射等场景下区分:

using System.ComponentModel;

public class Geek
{
    private string[] m_address = new string[3];
    private Dictionary<string, string> m_config = new Dictionary<string, string>();

    [IndexerName("Address")]
    public string this[int index]
    {
        get { /* 地址相关逻辑 */ }
        set { /* 地址相关逻辑 */ }
    }

    [IndexerName("Config")]
    public string this[string key]
    {
        get => m_config.TryGetValue(key, out var val) ? val : null;
        set => m_config[key] = value;
    }
}

不过日常使用的时候,还是直接用实例[参数]的语法就好啦。

内容的提问来源于stack exchange,提问作者Mohamed Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:40:29