Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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# 使用与对象类型相同的getter/setter命名作为另一个对象属性的对象_C#_Class_Naming Conventions - Fatal编程技术网

C# 使用与对象类型相同的getter/setter命名作为另一个对象属性的对象

C# 使用与对象类型相同的getter/setter命名作为另一个对象属性的对象,c#,class,naming-conventions,C#,Class,Naming Conventions,这是一个根本问题。将对象用作对象的属性时,因此Object2具有属性Object1 可以使用对象名作为getter和setter或第二个对象的类型和名称 Class Object1{} Class Object2 { Object1 Object1 {get; set;} // OR Object1 Object1_{get; set;} } 因为我曾经尝试过在简单的程序中使用相同的名称,而且它是有效的(尽管我不敢冒险使用它编写复杂的代码)。我知道可能存在歧义,但这对

这是一个根本问题。将对象用作对象的属性时,因此Object2具有属性Object1

可以使用对象名作为getter和setter或第二个对象的类型和名称

Class Object1{}

Class Object2
{
    Object1 Object1 {get; set;}
    // OR
    Object1 Object1_{get; set;}
}

因为我曾经尝试过在简单的程序中使用相同的名称,而且它是有效的(尽管我不敢冒险使用它编写复杂的代码)。我知道可能存在歧义,但这对任何项目都有效吗?

是的,你可以这样做。事实上,这是C语言中非常常见的模式#


看起来应该是这样的,因为您必须使用class2类型的对象才能访问该字段。如果class1是嵌套的,或者具有静态方法,那么如果这些方法具有相同的名称,则可能会导致问题。这没有问题,.Net本身也会做同样的事情:Form类的Dialog result属性被命名为它的类型,您可以在许多其他属性中找到它
class Foo
{
   Bar Bar {get; set; }
}