get在c#中做什么?
为了有效地显示和隐藏表单,我从其他地方获取了这段代码。虽然我了解其中的大部分,但我不明白get在这种情况下和一般情况下做了什么。这可以解释吗? WinFormsget在c#中做什么?,c#,forms,get,C#,Forms,Get,为了有效地显示和隐藏表单,我从其他地方获取了这段代码。虽然我了解其中的大部分,但我不明白get在这种情况下和一般情况下做了什么。这可以解释吗? WinForms 它只是自动生成函数上的语法包装器 public static Form1 get_frm1() { return _frm1; } 因此,每次引用FormProvider.frm1,就像调用FormProvider.get\u frm1() 事实上,如果您尝试编写如下代码: public class
它只是自动生成函数上的语法包装器
public static Form1 get_frm1()
{
return _frm1;
}
因此,每次引用FormProvider.frm1
,就像调用FormProvider.get\u frm1()
事实上,如果您尝试编写如下代码:
public class A {
public string Name {get;}
public string get_Name() {
return "James Bond";
}
}
它将给出编译时错误,因为存在定义冲突。这只是自动生成函数的语法包装
public static Form1 get_frm1()
{
return _frm1;
}
因此,每次引用FormProvider.frm1
,就像调用FormProvider.get\u frm1()
事实上,如果您尝试编写如下代码:
public class A {
public string Name {get;}
public string get_Name() {
return "James Bond";
}
}
它将给出编译时错误,因为存在定义冲突。its用作属性的getter方法 来自MSDN
属性结合了字段和方法的各个方面。致 一个对象、一个属性似乎是访问该属性的字段 需要相同的语法。对于类的实现者来说,属性是 一个或两个代码块,表示get访问器和/或集合 存取器。get访问器的代码块在 属性被读取;设置访问器的代码块在以下情况下执行: 将为该特性指定一个新值。没有集合的属性 访问器被认为是只读的。没有get访问器的属性是 认为只写。同时具有两个访问器的属性是 读写 与字段不同,属性未分类为变量。所以,, 不能将属性作为ref(C#Reference)或out(C)传递# 参考)参数
集合存取器 集合访问器类似于返回类型为void的方法。它使用 一个名为value的隐式参数,其类型为 财产。在下面的示例中,集合访问器被添加到 价值属性: 以这个类为例
class DemoClass
{
private int value;
public Int32 Value
{
get
{
return value;
}
set
{
this.value = value;
}
}
}
如果在反射器中查看已编译的组件,u会注意到类似的情况
.class private auto ansi beforefieldinit DemoClass
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname instance void .ctor() cil managed
{
.maxstack 8
L_0000: ldarg.0
L_0001: call instance void [mscorlib]System.Object::.ctor()
L_0006: ret
}
.property instance int32 Value
{
.get instance int32 ConsoleApplication1.DemoClass::get_Value()
.set instance void ConsoleApplication1.DemoClass::set_Value(int32)
}
.field private int32 value
}
its用作属性的getter方法 来自MSDN
属性结合了字段和方法的各个方面。致 一个对象、一个属性似乎是访问该属性的字段 需要相同的语法。对于类的实现者来说,属性是 一个或两个代码块,表示get访问器和/或集合 存取器。get访问器的代码块在 属性被读取;设置访问器的代码块在以下情况下执行: 将为该特性指定一个新值。没有集合的属性 访问器被认为是只读的。没有get访问器的属性是 认为只写。同时具有两个访问器的属性是 读写 与字段不同,属性未分类为变量。所以,, 不能将属性作为ref(C#Reference)或out(C)传递# 参考)参数
集合存取器 集合访问器类似于返回类型为void的方法。它使用 一个名为value的隐式参数,其类型为 财产。在下面的示例中,集合访问器被添加到 价值属性: 以这个类为例
class DemoClass
{
private int value;
public Int32 Value
{
get
{
return value;
}
set
{
this.value = value;
}
}
}
如果在反射器中查看已编译的组件,u会注意到类似的情况
.class private auto ansi beforefieldinit DemoClass
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname instance void .ctor() cil managed
{
.maxstack 8
L_0000: ldarg.0
L_0001: call instance void [mscorlib]System.Object::.ctor()
L_0006: ret
}
.property instance int32 Value
{
.get instance int32 ConsoleApplication1.DemoClass::get_Value()
.set instance void ConsoleApplication1.DemoClass::set_Value(int32)
}
.field private int32 value
}
frm1
是一个属性
属性通常有一个getterget
和一个可选的setterset
这些用于在访问属性时提供特殊实现
在这种情况下,如果属性的后台\u frm1
(这是一个字段)是null
,则getter负责将其设置为Form1
frm1
是一个属性的新实例
属性通常有一个getterget
和一个可选的setterset
这些用于在访问属性时提供特殊实现
在这种情况下,如果属性的后台程序\u frm1
(这是一个字段)是null
,则getter负责将其设置为Form1
的新实例,这些实例在C中调用#
属性是一种封装字段的方法,可以使用这些所谓的“Getter”和“Setter”方法访问字段,这些方法可以包含所需的任何逻辑
在这种情况下,“Getter”将返回表单1
的现有实例(如果有),或者创建一个新实例(如果没有找到),将其分配到\u表单1
字段并返回该实例
我建议你研究一下上面的链接,以便进一步理解。这些在C中被称为#
属性是一种封装字段的方法,可以使用这些所谓的“Getter”和“Setter”方法访问字段,这些方法可以包含所需的任何逻辑
在这种情况下,“Getter”将返回表单1
的现有实例(如果有),或者创建一个新实例(如果没有找到),将其分配到\u表单1
字段并返回该实例
我建议您研究上面的链接以进一步了解。…它不是一种getter方法吗?如何将get
作为属性设置器?即使是这样,如果你想得到答案,你也需要提供更多的信息。事实上,这充其量只是对原始问题的一个评论。@KenWhite-我的错,打字错误!如果希望这是一个答案,您仍然需要添加更多内容。当然。:-)我只是想再找几句话来解释你的答案,不过。:-。。。它不是一个getter方法吗?get
是一个属性设置器吗?即使是这样,如果你想得到答案,你也需要提供更多的信息。事实上,这充其量只是对原始问题的一个评论。@KenWhite-我的错,打字错误!你还需要