Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中有没有一种方法可以将参数与访问器一起使用#_C#_.net_Accessor - Fatal编程技术网

C# 在c中有没有一种方法可以将参数与访问器一起使用#

C# 在c中有没有一种方法可以将参数与访问器一起使用#,c#,.net,accessor,C#,.net,Accessor,我非常喜欢c#中访问器的语法,但是我需要在setter中为一些属性使用一些额外的值 我有没有办法做类似的事情,或者用这种语法是不可能的 public class Accesssor{ public List<CustomObject> AccessorStuff { get { return AccessorStuff; } set (ExtraParameters????) =>

我非常喜欢c#中访问器的语法,但是我需要在setter中为一些属性使用一些额外的值

我有没有办法做类似的事情,或者用这种语法是不可能的

public class Accesssor{
    public List<CustomObject> AccessorStuff { 
        get {
                return AccessorStuff;
            } 
        set (ExtraParameters????) => {
                AccessorStuff.add(new CustomObject(value,ExtraParameters))
            }
        }
}

公共类访问器{
公共列表访问器tuff{
得到{
返回访问器tuff;
} 
设置(外部参数??)=>{
add(新的CustomObject(值、外部参数))
}
}
}
(我也发现这很难搜索,因为我不知道这是否有一个确切的名字,所以如果我也能得到那条信息,我将不胜感激)


提前谢谢。

您可以在C中使用所谓的索引器#

与方法一样,在索引器中可以有任意数量(但至少有一个)的任何类型的参数。也可以重载索引器,即使用不同数量的参数或不同的参数类型创建不同的版本。例如:

public List<CustomObject> this[string name]
{
    ...
}

public List<CustomObject> this[string name, bool caseSensitive]
{
    ...
}

您可以在C中使用所谓的索引器#

与方法一样,在索引器中可以有任意数量(但至少有一个)的任何类型的参数。也可以重载索引器,即使用不同数量的参数或不同的参数类型创建不同的版本。例如:

public List<CustomObject> this[string name]
{
    ...
}

public List<CustomObject> this[string name, bool caseSensitive]
{
    ...
}

不,这是不可能的——如果我使用了你的财产,我也不会这么想。当我使用
set
时,我希望更改
列表
,而不是向其添加值。这通常通过类方法实现:

public void AddObject(CustomObjectType obj, ExtraParameters extraParameters) => 
    AccessorStuff.Add(new CustomObject(obj, ExtraParameters));

不,这是不可能的——如果我使用了你的财产,我也不会这么想。当我使用
set
时,我希望更改
列表
,而不是向其添加值。这通常通过类方法实现:

public void AddObject(CustomObjectType obj, ExtraParameters extraParameters) => 
    AccessorStuff.Add(new CustomObject(obj, ExtraParameters));

你在解释一个很难理解的奇怪问题。如果你解释了你想要得到的结果,你可能会发现你想要的解决方案完全不同。它在VB中是有效的,而在C#中是有效的。即使在VB中编写setter,也无法以C#中的正常方式访问它,从而变成set_Accessor()方法。所以你不妨把它作为一种方法。请注意,您需要传递的是一个列表,而不是CustomObject,因此您对属性没有任何用处。您正在解释一个确实难以理解的奇怪问题。如果你解释了你想要得到的结果,你可能会发现你想要的解决方案完全不同。它在VB中是有效的,而在C#中是有效的。即使在VB中编写setter,也无法以C#中的正常方式访问它,从而变成set_Accessor()方法。所以你不妨把它作为一种方法。请注意,您需要传递的是一个列表,而不是CustomObject,因此您根本不需要属性。问题是关于为属性使用其他参数-索引器不允许这种额外的自由度。在VB中,索引器称为默认属性。它们正是OP所需要的。@Tomer实际上多维数组是一种东西。他们的索引器接受多个输入:这与特纳列出的原因完全相反。但这是一种选择。但归根结底,它们是set()和get()函数对的语法糖,并且具有完全重载支持。@Christopher你是对的-我指的是书面答案,只有一个参数。问题是关于为属性使用附加参数-索引器不允许这种附加自由度。在VB中,索引器称为默认属性。它们正是OP所需要的。@Tomer实际上多维数组是一种东西。他们的索引器接受多个输入:这与特纳列出的原因完全相反。但这是一种选择。但归根结底,它们是set()和get()函数对的语法糖,并且具有完全重载支持。@Christopher你是对的-我指的是书面答案,只有一个参数。
public void AddObject(CustomObjectType obj, ExtraParameters extraParameters) => 
    AccessorStuff.Add(new CustomObject(obj, ExtraParameters));