C#中带有参数的属性

穆罕默德·哈桑(Mohamed Hassan)

VB.Net中,属性可以像在函数中一样接收参数,方法是在属性定义的开头提到所有参数:

Private m_Address(2) As String
 Property Address(ByVal index As Integer) As String
   Get
     If index >= 0 And index <= UBound(m_Address) Then
       Return m_Address(index)
     End If
   End Get
   Set(ByVal Value As String)
     If index >= 0 And index <= UBound(m_Address( Then
       m_Address(index) = Value
     End If
   End Set
 End Property

如果要分配或读取属性值,请在括号中发送所需的参数:  

Dim hassn As New PersonClass()
 Dim counter As Integer
 hassn.Address(0) = "National Street"
 hassn.Address(1) = "Imbaba neighborhood"
 hassn.Address(2) = "Giza"
 For counter = 0 To 2
   MsgBox(hassn.Address(counter))
 Next

我尝试使用C#来做到这一点,但出现此错误:

public class Geek
{
    private string[] m_address = new string[2];
    public string[int x] address // error here
    {
        get
        {
            if (index >= 0 && index < index.length)
            {
                return m_address;
            }
        }
        set {
            if (index >= 0 && index < index.length)
            {
                m_address = value;
            }
        }
    }
}
法比安

是的,在C#中,没有诸如Parameterized Properties这样的东西您可以在C#中定义的唯一类型的参数化属性是索引器。

典型的C#属性只有一个默认参数value无论如何,属性是一组访问器,因此您可以定义这些方法而不是使用属性:

public class Geek
{
    private string[] m_address = new string[2];

    public void setAddress(int index)
    {
         if (index >= 0 && index < index.length)
         {
            m_address = value;
         }
    }

    public void getAddress(int index)
    {
        if (index >= 0 && index < index.length)
        {
           return m_address;
        }
    }
}

另一个选择是创建一个Address封装字段的类,并定义一个接受参数的自定义索引器。

好吧,让我们看看如何在这里使用索引器。首先让我们为地址创建一个结构

public class Address
{
   private string[] m_address = new string[2];

   public string this[int index]
   {
      get => index >= 0 && index < m_address.Length ? m_address[index] : null;
      set
      { 
          if (index >= 0 && m_address.Length > index)
          {
              m_address[index] = value;
          }
      }
   }
}

然后,让我们更改您的主类以使用Address:

public class Geek
{
    public Address Address { get; } = new Address();
}

现在,您可以将Indexer用于Address属性,如下所示:

var hassn = new Geek();
hassn.Address[0] = "National Street";

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#中带有参数的构造方法

来自分类Dev

C#中带有参数的构造方法

来自分类Dev

通过反射C#调用参数中带有参数的方法

来自分类Dev

c#继承了方法参数中带有派生类的接口

来自分类Dev

C#:Cdecl DllExport在参数中带有指向类实例的指针

来自分类Dev

如何在C#中声明带有可选参数的函数

来自分类Dev

如何在C#中合并带有传递参数的代码?

来自分类Dev

如何调用带有对象参数的Oracle存储过程以在C#中输入?

来自分类Dev

C#中带有方法的参数的字符串

来自分类Dev

带有参数的新任务的行为不是 C# 中的预期行为

来自分类Dev

方括号中带有(属性)的方法参数

来自分类Dev

带有MVC C#中的模型错误列表的一个属性

来自分类Dev

C#无法在带有测试属性的条件中获取数据

来自分类Dev

将带有子字段的父属性显示到 C# 中的数据网格视图

来自分类Dev

C#中带有Selenium的MoveByOffset

来自分类Dev

用C#调用带有参数的方法的最短方法

来自分类Dev

使用HttpWebResponse C#的带有参数的HttpGet

来自分类Dev

如何使用C#获取带有返回参数的数据?

来自分类Dev

MVC C# 带有多个参数的错误 URL 处理

来自分类Dev

C#编写Xml(带有http的属性)

来自分类Dev

为什么在C#中,从函数参数中引用变量比从私有属性中引用变量快?

来自分类Dev

参数和带有约束的T泛型参数有什么区别?C#

来自分类Dev

关于带有:的C#语法以及类声明中的后续参数。在线转换器无法转换

来自分类Dev

在c#中更新带有文本的图像后,从数据库加载图像时,该参数无效

来自分类Dev

(带有Oracle数据库的C#应用程序)在存储过程中返回参数

来自分类Dev

将C#类属性作为方法中的参数传递

来自分类Dev

带有参数的Ember计算属性

来自分类Dev

在C ++ 11中传递带有未指定参数的函数?

来自分类Dev

如何在C ++中传递带有'&'符号的参数

Related 相关文章

  1. 1

    C#中带有参数的构造方法

  2. 2

    C#中带有参数的构造方法

  3. 3

    通过反射C#调用参数中带有参数的方法

  4. 4

    c#继承了方法参数中带有派生类的接口

  5. 5

    C#:Cdecl DllExport在参数中带有指向类实例的指针

  6. 6

    如何在C#中声明带有可选参数的函数

  7. 7

    如何在C#中合并带有传递参数的代码?

  8. 8

    如何调用带有对象参数的Oracle存储过程以在C#中输入?

  9. 9

    C#中带有方法的参数的字符串

  10. 10

    带有参数的新任务的行为不是 C# 中的预期行为

  11. 11

    方括号中带有(属性)的方法参数

  12. 12

    带有MVC C#中的模型错误列表的一个属性

  13. 13

    C#无法在带有测试属性的条件中获取数据

  14. 14

    将带有子字段的父属性显示到 C# 中的数据网格视图

  15. 15

    C#中带有Selenium的MoveByOffset

  16. 16

    用C#调用带有参数的方法的最短方法

  17. 17

    使用HttpWebResponse C#的带有参数的HttpGet

  18. 18

    如何使用C#获取带有返回参数的数据?

  19. 19

    MVC C# 带有多个参数的错误 URL 处理

  20. 20

    C#编写Xml(带有http的属性)

  21. 21

    为什么在C#中,从函数参数中引用变量比从私有属性中引用变量快?

  22. 22

    参数和带有约束的T泛型参数有什么区别?C#

  23. 23

    关于带有:的C#语法以及类声明中的后续参数。在线转换器无法转换

  24. 24

    在c#中更新带有文本的图像后,从数据库加载图像时,该参数无效

  25. 25

    (带有Oracle数据库的C#应用程序)在存储过程中返回参数

  26. 26

    将C#类属性作为方法中的参数传递

  27. 27

    带有参数的Ember计算属性

  28. 28

    在C ++ 11中传递带有未指定参数的函数?

  29. 29

    如何在C ++中传递带有'&'符号的参数

热门标签

归档